2012-05-13 14 views
0

を追加するここではこれをテストする場合、それは私がINTO IGNORE設定しているにもかかわらず、テーブルに同じエントリを追加し続けてMySQLのINSERTは、INTOが重複したエントリ

mysql_query("INSERT IGNORE INTO storeip (ip) 
VALUES ('$ip')"); 

で問題を有する特定のエリアイムだ保ちIGNORE 。 Iv'eはちょうどPHP &のmysqlを学び始めたので、どんな助けもありがたいです。

おかげ

+0

は存在しませんキーと重複はありません – Nico

+0

おかげでうまくいきました、私はあなたがそれを行うことができるか分からなかった:) 少なくともこれはテーブルの唯一のフィールドではない場合は、これをやってみようか? ありがとう –

+0

これを回答として編集して受け入れることができます。より多くのフィールドがある場合は、一意に保つ必要のあるフィールドを識別し、すべてのプライマリキーを作成する必要があります – Nico

答えて

1

あなたはIP列にUNIQUE INDEXを持っていないように見えます。 INSERT IGNOREが必要に応じて機能するためには、これが必要です。これを試して;

のALTER TABLE IPはすでに重複を削除するにはUNIQUE(IP)

を追加し、あなたはこれを実行することができます。

ALTER TABLEは、IPはUNIQUE(IP)を追加IGNORE

+0

ありがとう私は、問題を解決するためには、はい、私は一意索引を持っていません。少なくとも、私は複数のフィールドがある場合、これを将来どのように修正するかを知っています。 –

+0

[似たような質問](http://stackoverflow.com/questions/5914060/how-to-insert-data-with-ignore-if-one-variable-is-allways-different) –

+0

テーブルがInnoDBの場合これは悪い考えです。 InnoDBは主キーをMyISAMと少し違って扱います。通常は、自動インクリメントのプライマリキーを作成し、一意である必要があるデータにUNIQUEインデックスを配置することをお勧めします。希望が役立ちます。 –

0

なぜいけませんか? ignoreはエラーを無視するだけです。 ipをユニークにします。 IPは、テーブル上の唯一のフィールドである場合は、IPは、テーブル上の唯一のフィールドである場合

alter table storip add unique (ip); 
+0

ありがとうございました。 –

0

、ただ単にそれは主にし、それ主キーを作成し、重複なし

alter table storeip add primary key (ip); 
+0

ありがとう –