0

我想从我的数据库中获取当前不在我的项目数组中的项目列表。

我研究过 ' NOT IN ' 是大量执行多个 != ' NOT EQUAL TO '的完美解决方案。

但我生成列表的代码:

    echo $query = sprintf("SELECT * FROM %s WHERE profile_id='%s' AND id NOT IN (%s)", $table_array[$item], $profile_id, implode(',', $shop_window_items));

导致此错误:

SELECT * FROM event WHERE profile_id='945b4dbf5bf8ee1ac08a73e9e25a939772c9c9b8' AND id NOT IN (4d96b83d18a8c2db79089ac002e346fd9dea5c43,3803bb535015174e9675090fbb680a5f286ba6bf,58f07f83a8ea10ec4db9c8b7c7f39f0a6c3a2079,57c2db2ce32925bcb49b83e22513ca74cc9bcadc)Unknown column '4d96b83d18a8c2db79089ac002e346fd9dea5c43' in 'where clause

谁能告诉我我做错了什么?

提前致谢

4

2 回答 2

3

您需要在字符串周围加上单引号,否则它们被假定为系统名称。

...NOT IN ('%s')", $table_array[$item], $profile_id, implode("','", ...
           ^  ^                                               ^ ^
于 2013-03-14T00:47:47.573 回答
0

很确定你需要在里面的值周围加上引号IN

echo $query = sprintf("SELECT * FROM %s WHERE profile_id='%s' AND id NOT IN (%s)", $table_array[$item], $profile_id, "'" . implode("','", $shop_window_items) . "'");
于 2013-03-14T00:47:54.557 回答