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]'

在这两种情况下,如果新旧记录中的数据相同但顺序不同,则插入。如果数据相同,我希望它会更新。我希望我的表设置不正确,但看不出问题出在哪里。谁能告诉我为什么数据匹配时它不更新?

4

1 回答 1

0
  1. 您必须在此处插入包含主键 ID 的数据。在这种情况下,如果新旧 id 相同,则数据将被替换 - 否则不会。但是您的 PK 是 AUTO_INC,因此您也可以使用唯一索引列order或其他任何内容。供参考,请参阅 -替换

  2. 要打印数组内容,您需要使用 {} 之类的

    “在重复键更新时插入 $table ( order, data) 值 ({$parts[0]},'{$parts 1 }') order= '{$parts[0]}'”

    或串联

希望这可以帮助你

萨达特

于 2010-07-10T15:56:08.900 回答