1

こんにちは、スクリプトを使用してcsvをインポートしています。テーブル構造は次のとおりです

`contact_id` int(11) NOT NULL auto_increment,
  `contact_first` varchar(255) character set latin1 default NULL,
  `contact_last` varchar(255) character set latin1 default NULL,
  `contact_email` varchar(255) character set latin1 default NULL,
  PRIMARY KEY  (`contact_id`)

そしてcsvのデータはこのようなものです

Jim,Smith,jim@tester.com
Joe,Tester,joe@tester.com

挿入に使用しているクエリは以下のとおりです

mysql_query("INSERT IGNORE INTO contacts (contact_first, contact_last, contact_email) VALUES
                (
                    '".addslashes($data[0])."',
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."'
                )
            ");

クエリで無視関数を使用しましたが、機能せず、同じ値を挿入し続けます

4

3 に答える 3

0

キーワードは、IGNORE重複行に対してのみ目的の影響を与えます。

適切な列に主キーまたは一意のキーがある場合にのみ、行は重複として認識されます。

問題が何であるかを正確に説明していませんが、contact_email列に一意のキーを作成して、重複が挿入されないようにすることをお勧めします。

また、文字列が正しくエンコードされていることを確認するために、mysql_escape_string代わりに少なくとも使用することをお勧めします。addslashes

mysql_* 関数が非推奨であるという事実に関するコメントがある可能性が高いため、PDO または mysqli_* 関数を調べる必要があります。

于 2013-03-26T05:43:38.327 に答える
0

IGNORE キーワードを使用すると、INSERT ステートメントの実行中に発生したエラーは代わりに警告として扱われますDOCSを参照してください

于 2013-03-26T05:45:45.347 に答える
0

IGNOREの使用法は次のとおりです。

If you use the IGNORE keyword, errors that occur while executing the INSERT statement are treated as warnings instead. For example, without IGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEY value in the table causes a duplicate-key error and the statement is aborted. With IGNORE, the row still is not inserted, but no error is issued.

あなたの場合、同じ3つの値を挿入していますが、IDはauto incremental 同じ値を持つ新しいレコードを挿入するため、明らかです。データベースに挿入されないようにしたい場合は、他の列の1つに一意のインデックスを追加する必要があります

それが役立つことを願っています!

于 2013-03-26T05:47:35.270 に答える