我有一个要遍历的值数组,试图检查MySQL表中是否有与该数组值匹配的列,然后在找不到匹配项的情况下插入新记录。
foreach($mls_ids as $mls_id) {
$query = "INSERT INTO mdc_data (mls_id) VALUES ('$mls_id')
WHERE NOT EXISTS ( SELECT mls_id FROM mdc_data WHERE mls_id = '$mls_id')
LIMIT 1 ";
$result = mysqli_query($mysqli, $query) or trigger_error("Query Failed!
SQL: $query - Error: ". mysqli_error($mysqli), E_USER_ERROR);
}
没有记录插入到表中。 (表为空)
抛出错误:SQL语法有错误;查看手册 对应于您的MySQL服务器版本的正确语法, 在'WHERE NOT EXISTS(WHERE NOT EXISTS(SELECT mls_id FROM mdc_data WHERE mls_id)附近使用 ='2189665')LIMIT
答案 0 :(得分:0)
INSERT INTO mdc_data (mls_id)
SELECT * FROM (SELECT '$mls_id') AS tmp
WHERE NOT EXISTS (
SELECT mls_id FROM mdc_data WHERE id = '$mls_id'
) LIMIT 1;
答案 1 :(得分:0)
工作代码。
在mls_id col(@Dimi)上添加了唯一索引。
其余部分使用@Funk Forty Niner提供的示例。
$query = "INSERT INTO mdc_data (mls_id)
SELECT '$mls_id' FROM DUAL
WHERE NOT EXISTS (SELECT mls_id FROM mdc_data
WHERE mls_id='$mls_id')
LIMIT 1";
现在更好地了解Dual的使用。
感谢您的帮助!