我在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)
现在我收到了这个错误
任何帮助都会很棒!
答案 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注入。