mysql - NOT IN WHERE 子句错误

标签 mysql sql printf notin

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

我研究过,'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

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

提前致谢

最佳答案

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

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

关于mysql - NOT IN WHERE 子句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399233/

相关文章:

mysql - SQL 数字不准确

c - 是否有 printf 转换器以二进制格式打印?

c - C中的数组打印错误

java - 线程 "main"java.util.IllegalFormatConversionException 中出现异常

mysql - 多语言数据库 - 获取所有语言的帖子

mysql - 如何仅从数据类型为 TIMESTAMP 的列中检索日期

mysql - 我的 SQL 查询这么慢是否正常?

mysql - 为什么在将 DISTINCT 值插入表时会出现 "Duplicate entry"错误?

mysql - MySQL 的过滤、排列和计数

mysql - 如何备份数据库数据,使其适合新的数据库结构?