从表中选择不在php数组查询中不起作用

时间:2013-10-25 10:44:27

标签: php mysql arrays

当我尝试使用$name_array子句中的NOT IN变量进行选择时,我得到一个数组到字符串转换警告。我已经尝试了大量不同的引用组合,但我得到语法错误或数组到字符串转换警告。任何人都可以看到我在这里做错了什么。感谢。

$db->query("SELECT contactname
            FROM contacts 
            WHERE contactname 
            NOT IN (' . implode(",", $name_array) . ')
          ");

4 个答案:

答案 0 :(得分:5)

在将每个名称列入列表之前,您需要在每个名称周围加上引号。

$names = implode(",", array_map(function($x) { return "'$x'"; }, $name_array));
$db->query("SELECT contactname
            FROM contacts 
            WHERE contactname 
            NOT IN ($names)
          ");

答案 1 :(得分:3)

由于字符串,你必须在''中引用名称,所以请使用。

$val="'";
$val.=implode("','",$name_array);
$val.="'";
$db->query("SELECT contactname FROM contacts WHERE contactname NOT IN ($val) ");

这将极力帮助你

答案 2 :(得分:2)

尝试使用FIND_IN_SET()

$db->query("SELECT contactname
            FROM contacts 
            WHERE NOT FIND_IN_SET(contactname, \'' . implode(",", $name_array) . '\')   
          ");

答案 3 :(得分:1)

$db->query("SELECT contactname
            FROM contacts 
            WHERE contactname 
            NOT IN ('".implode("','",$name_array).'\')');