如果column不包含数组中的值,则插入新记录

时间:2019-01-14 15:48:32

标签: php mysqli

我有一个要遍历的值数组,试图检查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

2 个答案:

答案 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的使用。

感谢您的帮助!