2011-08-16 6 views
1

こんにちは、私はphpとmysqlを使い慣れています。mysql dbテーブルに特定のIDを持つ行が含まれていない場合は、テーブルにデータを追加してください

PHPを使用して、mysqlデータベースのテーブルに特定のIDを持つ行が含まれているかどうかをチェックし、データをテーブルに追加しない場合はどうすればいいですか?

例えば、

表構造:(テーブル名:レコード) ID、DATA

iはハローどのように使用することができ、PHPコードに変数に格納されている= ID = 123とデータを持っていますPHPのSQLクエリは、そのIDを使用してテーブル内のをチェックし、そうでない場合は、IDとDATAをテーブルに挿入します。

ご理解いただきますようお願い申し上げます。

P/S私はあなたのIDは一意のキーである場合は、あなたが直接行を挿入しようとすることができるデータベース

答えて

3

考える大いに役立つでしょう:

CREATE TABLE my_table(ID INT UNSIGNED UNIQUE... 

が、その後INSERT IGNOREを使用します。

INSERT IGNORE INTO my_table(ID, DATA) VALUES(some_id, some_data) 
+0

選択されたすべてのフィールドが既に一意である場合にのみ、 'UNIQUE'制約を追加することができますが、それは、良い提案だが、それ以外の場合はあなたにエラーが発生します。私が取り組んでいたテーブルでは、いくつかの重複したエントリーが(何らかの未知の理由で)すでに存在していました。私はさらに重複しないようにしようとしていました。 –

+0

「INSERT IGNORE」はMySQLのエラーを警告に変え、長いスクリプトを中断することなく引き続き実行できるようにします。これで、 'SHOW WARNINGS'コマンドで警告を見ることができます。 –

0

にPHPスクリプトを接続しています。そのIDが既に表にある場合、データベースは挿入できず、エラーを戻します。そうでなければ、最初にSELECTステートメントを実行して、このIDがテーブルに存在するかどうかを確認し、挿入しない場合は、そのIDを挿入する必要があります。

また、このスレッドはID UNIQUE必ず私がHow to 'insert if not exists' in MySQL?

2
IF NOT EXISTS(SELECT 1 FROM structure WHERE ID = <yourid>) 
    INSERT INTO structure (ID, DATA) VALUES(<yourid>, <yourdata>) 
1

ただ、REPLACEでINSERTを置き換えます。

http://dev.mysql.com/doc/refman/5.5/en/replace.html

+0

良い提案Sean - これは重複した値を避けますが、元のポスターの意図とは異なる既存のデータも上書きします*。 –

1

別のオプション:

INSERT INTO record(id, `data`) SELECT 123, 'hello' 
FROM new_table WHERE NOT EXISTS (SELECT id from record where id = 123); 
関連する問題