我想从我的数据库中获取当前不在我的项数组中的项列表。
我研究过' 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
谁能告诉我我做错了什么?
提前致谢
答案 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) . "'");