PHP关联数组如果表中不存在数据,则插入

时间:2014-03-11 11:42:19

标签: php mysql insert

我在PHP中有一个assosiative数组,它将数据插入表

foreach($array as $key => $value){
        $query = "INSERT INTO live_list (file_id, date) SELECT ('$key', '$value') FROM dual WHERE NOT EXISTS (SELECT * FROM live_list WHERE file_id = '$key')";
        mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link));
    }

然而,当我从索引数组转移到assosiative数组时,如果我的数组中的数据不存在于我的表中,我无法弄清楚如何插入这些数据。

Query failed: Operand should contain 1 column(s)

现在我收到了这个错误

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

为什么要使用子查询?

假设file_id是一个唯一字段(即整个表中没有重复字段),如果它还没有,请将其作为表中的唯一索引:

ALTER TABLE live_list
ADD UNIQUE (file_id)

并将您的查询更改为

INSERT INTO live_list (file_id, date) 
 VALUES ('$key', '$value') 
 ON DUPLICATE KEY UPDATE date = date;

这意味着,如果遇到重复的密钥,它会将date的值简单地“更新”为已经存在的值。

虽然您应该查看绑定参数以防止sql注入。