0

PHPでファイルをテーブルにロードしています。次のようなテーブルを作成します。

CREATE TABLE IF NOT EXISTS $table (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order` INT DEFAULT 0,
`data` VARCHAR(200) UNIQUE KEY,
`cur_timestamp` TIMESTAMP DEFAULT NOW())"

そして、次のようなテキスト ファイルから入力します。

LOAD DATA LOCAL 
INFILE '".$file ."' 
REPLACE INTO TABLE $table 
FIELDS TERMINATED BY '^' 
(`order`,`data`)"

また、ファイルを配列に読み込んで、INSERT .. ON DUPLICATE KEY を使用してみました

INSERT INTO $table (`order`,`data`)
VALUES ($parts[0],'$parts[1]') 
ON DUPLICATE KEY UPDATE `order` = '$parts[0]'

どちらの場合も、新しいレコードと古いレコードでデータが同じであるが順序が異なる場合、INSERT が実行されます。データが同じであればUPDATEすることを期待しています。テーブルが正しく設定されていないと思いますが、何が問題なのかわかりません。データが一致するときに更新されない理由を誰か教えてもらえますか?

4

1 に答える 1

0
  1. 主キーを含むデータを挿入する必要があります-ここにID。その場合、古い ID と新しい ID が同じ場合、データは置き換えられますが、そうでない場合は置き換えられません。ただし、PK は AUTO_INC であるため、代わりに一意のインデックス列などを使用できorderます。参照用に参照してください -置換

  2. 配列の内容を印刷するには、次のように {} を使用する必要があります

    "INSERT INTO $table ( order, data) VALUES ({$parts[0]},'{$parts 1 }') ON DUPLICATE KEY UPDATE order= '{$parts[0]}'"

    または連結

これがあなたを助けることを願っています

サダト

于 2010-07-10T15:56:08.900 に答える