を追加するここではこれをテストする場合、それは私がINTO IGNORE設定しているにもかかわらず、テーブルに同じエントリを追加し続けてMySQLのINSERTは、INTOが重複したエントリ
mysql_query("INSERT IGNORE INTO storeip (ip) VALUES ('$ip')");
で問題を有する特定のエリアイムだ保ちIGNORE 。 Iv'eはちょうどPHP &のmysqlを学び始めたので、どんな助けもありがたいです。
おかげ
を追加するここではこれをテストする場合、それは私がINTO IGNORE設定しているにもかかわらず、テーブルに同じエントリを追加し続けてMySQLのINSERTは、INTOが重複したエントリ
mysql_query("INSERT IGNORE INTO storeip (ip) VALUES ('$ip')");
で問題を有する特定のエリアイムだ保ちIGNORE 。 Iv'eはちょうどPHP &のmysqlを学び始めたので、どんな助けもありがたいです。
おかげ
あなたはIP列にUNIQUE INDEX
を持っていないように見えます。 INSERT IGNOREが必要に応じて機能するためには、これが必要です。これを試して;
のALTER TABLE IPはすでに重複を削除するにはUNIQUE(IP)
を追加し、あなたはこれを実行することができます。
ALTER TABLEは、IPはUNIQUE(IP)を追加IGNORE
ありがとう私は、問題を解決するためには、はい、私は一意索引を持っていません。少なくとも、私は複数のフィールドがある場合、これを将来どのように修正するかを知っています。 –
[似たような質問](http://stackoverflow.com/questions/5914060/how-to-insert-data-with-ignore-if-one-variable-is-allways-different) –
テーブルがInnoDBの場合これは悪い考えです。 InnoDBは主キーをMyISAMと少し違って扱います。通常は、自動インクリメントのプライマリキーを作成し、一意である必要があるデータにUNIQUEインデックスを配置することをお勧めします。希望が役立ちます。 –
なぜいけませんか? ignoreはエラーを無視するだけです。 ipをユニークにします。 IPは、テーブル上の唯一のフィールドである場合は、IPは、テーブル上の唯一のフィールドである場合
alter table storip add unique (ip);
ありがとうございました。 –
、ただ単にそれは主にし、それ主キーを作成し、重複なし
alter table storeip add primary key (ip);
ありがとう –
は存在しませんキーと重複はありません – Nico
おかげでうまくいきました、私はあなたがそれを行うことができるか分からなかった:) 少なくともこれはテーブルの唯一のフィールドではない場合は、これをやってみようか? ありがとう –
これを回答として編集して受け入れることができます。より多くのフィールドがある場合は、一意に保つ必要のあるフィールドを識別し、すべてのプライマリキーを作成する必要があります – Nico