不在其中的条款错误

时间:2013-03-14 00:43:32

标签: mysql sql printf notin

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

我研究过' NOT 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));

导致此错误:

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

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

提前致谢

2 个答案:

答案 0 :(得分:3)

您需要围绕字符串使用单引号,否则它们将被假定为系统名称。

...NOT IN ('%s')", $table_array[$item], $profile_id, implode("','", ...
           ^  ^                                               ^ ^

答案 1 :(得分: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) . "'");