2

当我尝试在子句中使用我的$name_array变量进行选择时,我收到一个数组到字符串转换的警告。NOT IN我尝试了很多不同的引号组合,但我要么收到语法错误,要么收到数组到字符串转换的警告。谁能看到我在这里做错了什么。谢谢。

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

4 回答 4

5

在将它们内爆到列表中之前,您需要在每个名称周围加上引号。

$names = implode(",", array_map(function($x) { return "'$x'"; }, $name_array));
$db->query("SELECT contactname
            FROM contacts 
            WHERE contactname 
            NOT IN ($names)
          ");
于 2013-10-25T10:51:30.677 回答
3

由于字符串,您必须在 '' 中引用名称,因此请使用。

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

这绝对会帮助你

于 2013-10-25T11:06:01.587 回答
2

尝试使用FIND_IN_SET()

$db->query("SELECT contactname
            FROM contacts 
            WHERE NOT FIND_IN_SET(contactname, \'' . implode(",", $name_array) . '\')   
          ");
于 2013-10-25T10:54:34.363 回答
1
$db->query("SELECT contactname
            FROM contacts 
            WHERE contactname 
            NOT IN ('".implode("','",$name_array).'\')');
于 2013-10-25T10:57:11.250 回答