2011-02-08 26 views
3
+----+----------+-----------+ 
| id | gamertag | timestamp | 
+----+----------+-----------+ 

上記の表があるので、まだ存在しない場合はゲーマータグを挿入します。どうすればいい?値が存在しない場合にのみ挿入

$gamertag = "l RaH l"; 
mysql_query("INSERT INTO `gamertags`(`gamertag`)VALUES ('".$gamertag."')"); 

答えて

7

あなたはBを行う必要がありますoth things:Create a unique index on columnゲーマータグinsert ignoreです。

一意のインデックスは、重複行の追加を防止します。

重複行が追加されていない場合、挿入無視により、mysqlが警告を発行しないようにします。

+1

これは完璧な答えです。 –

+0

@ダンありがとう!また、リンクを追加するため。 – awm

3

Index gamertag column as unique。その後、最初の挿入だけが機能します。同じゲーマータグが存在する場合、INSERTは失敗します。

+0

あなたが@sarwarの答えのようなユニークな使用、または [INSERT ... DUPLICATE KEY UPDATE ON] [1] ので、キーのみ、タイムスタンプを更新存在する場合 [1]使用することができます。http://をdev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html –

+0

これは、制約が最初に存在すること、またはそのようなクエリを使用できないことを前提としています。 –

2

このキーワード:)

編集についてのMySQLのdevのページをチェックし、INSERT IGNOREを試みることができる - 下記のコメントに基づいて:屋は、あなたがユニークインデックスとしてゲーマータグ列を持っている必要があります。..
をしてupvoted人々これを「理解された」ために取ったかもしれない。

編集 - 答えを確定答えを更新する:

$gamertag = "l RaH l";
mysql_query("INSERT IGNORE INTO gamertags(gamertag)VALUES ('".$gamertag."')");

少なくとも、それはありませんでした(挿入または更新が利用できないユニークなゲーマータグ列をインデックスIFY

+0

'gamertag'にユニークなインデックスが必要です –

+0

' INSERT IGNORE'だけでは、 'INSERT'が重複した行を作成するのを止めることはありません。これは質問に答えません。それを明確にアップした人は、彼らが何をしているのか分からず、この質問に参加すべきではありません。 –

+0

@dan OPは挿入を止めることに関して何も言及していませんでした。 –

関連する問題