php - 使用 php 和 mysql 时出现 WHERE email NOT IN (%s) 问题

标签 php mysql sql

我正在使用 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/

相关文章:

sql - BigQuery 和标准 SQL : how to group by arbitrary day interval

java - 使用外部服务器reSTLet框架

mysql - 需要有关查询性能的帮助

java - 为什么在配置 c3p0 后出现内存泄漏异常?

php - 如何将单选按钮放入输出表中?

java - Hibernate - 在 OneToMany 上使用 JOIN 时 sqlQuery 映射冗余记录

MYSQL跨表统计匹配结果

php - 在 PHP 中读取包含一些荷兰语或法语字符的 CSV/Excel 文件

php - Whatsapp PHP api 接收编码消息

php - Symfony 进程 npm 安装。在 CLI 中工作不适用于 HTTP