2012-04-19 19 views
2

'INSERT IGNORE INTO'では、無視する原因となる列(「一意」/「プライマリ」に設定されている列)をどのように取得できますか?INSERT IGNORE INTO - 原因は何ですか?

使用例は、ユーザーをテーブルに挿入して、ユーザー名または電子メールがすでに挿入されている場合は挿入しません。既に挿入されている電子メールかユーザー名(またはその両方) javascript経由で画面にエラーメッセージが表示されます。

私は、あらかじめSELECTを使用するよう提案しているかもしれません。しかし、これを行うことで、2つの追加クエリを実行する必要があります - 私はできるだけクリーン/迅速にスクリプトを維持しようとしています。

私はmysql_affected_rows()が挿入されているかどうかを教えてくれますが、そうしないようにしてくれた列は返さないことを知っています。

私はmysql_errorなどを使用することができますか?私はmysql_errorがエラーでしか表示されないので、私は '無視する'というエラーをバッファリングしないので、わからない。


mysql_errorなどを解析すると@mysql_query( 'INSERT INTO ...')は動作しますか?

答えて

4

SHOW WARNINGSを実行すると、重複したキーに関する情報が表示されます。

あなたはこの質問への回答でMySQLの警告を処理するPHPコードの例を見つけることができます:Can I detect and handle MySQL Warnings with PHP?

+0

おかげで、それは私にどんな「UNIQUE列」エラーを与えるものではありません。私はIGNOREをオフにしようとします。 –

+0

はい、私は無視をオフにするときに動作します。しかし、それは私に "キー2の重複エントリテスト"というアイデアを与えてくれます。どのようなコラムであるかを教えてくれますか?($ key == '2')if –

+0

ええと、キーの名前を表示する方法はないと思います。 –

関連する問題