当我试图使用$name_array子句中的NOT IN变量进行选择时,会收到一个从数组到字符串的转换警告。我尝试过不同的引号组合,但我要么得到语法错误,要么得到一个数组到字符串的转换警告。有人知道我在这里做错了什么吗。谢谢。

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

最佳答案

你需要在每个名字周围加上引号,然后将它们内化为一个列表。

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

10-01 20:18