我正在使用 php 和 mysql 开发一个项目,在 WHERE 子句中添加 NOT IN 之前,我有以下 sql 查询,该查询运行良好
$excludeEmail = 'abc@gmail.com','def@hotmail.com','u2u@xyz.com';
$result = $mSearch->dao->query(sprintf('
SELECT id
FROM(
SELECT id, date
FROM table
WHERE email NOT IN (%s)
AND b_enabled=1
ORDER BY id DESC LIMIT 20) AS t1
ORDER BY date ASC
LIMIT 2
', $excludeEmail ));
请告诉我哪里出了问题。
它不会从表中选择任何行。
编辑
我认为我的子查询有问题,让我解释一下我对子查询的期望
我需要表中“id”字段中具有最大值的 20 行
这些行不应包含我通过变量 $excludeEmail 提供的任何电子邮件地址,
这些行的 b_enabled 字段中不应包含 1。
问题
主要问题是,如果变量 $excludeEmail 中没有电子邮件地址,它不会从表中选择任何行。
最佳答案
您需要在排除变量周围加上引号:
$excludeEmail = "'abc@gmail.com','def@hotmail.com','u2u@xyz.com'";
关于php - 使用 php 和 mysql 时出现 WHERE email NOT IN (%s) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41330976/