2009-06-11 11 views
1

JSONオブジェクトから文字列の配列を取得しています。これらの文字列をDBに保存したいのですが、まだそこにない場合に限ります。 DBに既に入っているものと私が入力しようとしているものを比較し、マッチを除外する最良の方法は何ですか?レコードが存在しない場合にのみMySQLテーブルに追加するには?

私はPHPとMySQLを使用しています。

+0

['INSERT ... ON DUPLICATE KEY UPDATE'](http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html)参照:[" INSERT IGNORE " vs "INSERT ... ON DUPLICATE KEY UPDATE"](http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update) – troelskn

答えて

5

あなたは、文字列がすでに存在する場合のみ、レコードを残したいと思っている記述何ので、あなたはおそらくしたいことはINSERTからIGNORE修飾子です(つまり、あなたがINSERT IGNORE ...を行います)。重複したキーが見つかった場合は、クエリによって何も行われません。これには、もちろん、挿入する文字列フィールドに独自のキーが必要です。

2

MySqlでは、「ignore」オプション付きのinsert文を使用できます。このオプションは、一意のフィールドが既存の行のフィールドと一致する場合は行を挿入しません。テーブルには、関連フィールドを含む一意制約が必要です。

0

非常に簡単な例:

あなたのテーブル:ユーザー あなたのフィールド:ユーザーINTO USER_NAME

INSERT(USER_NAME、ZIP_CODE、作成された) VALUES (:users_id、USER_NAME、ZIP_CODEは、 ユニークインデックスを作成'joe'、75034、 '2009-06-11') 重複キー更新でのユーザーID = LAST_INSERT_ID(ID)

user_nameには一意のインデックスがあります。したがって、それを複数回追加することはできません。上記のSQLを使用すると、最初はうまく追加されます。 2回目は、実際には挿入されません。 on duplicate keyが設定されている方法で、PHPでmysqlの最後のinsert idを取得し、users_idが本当の挿入物か複製物かを知ることができるようになりました。

関連する問題