php - WHERE 条件中的顺序如何影响使用 PDO::bindParam() 的查询?

标签 php mysql pdo where-clause

我有以下 WHERE 条件

WHERE table.status IN ('Active') AND table.endDate < :endDate AND :user IN (table.userId, mach.techId, mach.respId) AND 1

我绑定(bind)了参数并且它可以工作,但是如果条件是

WHERE :user IN (table.userId, mach.techId, mach.respId) AND table.status IN ('Active') AND table.endDate < :endDate AND 1

这不起作用。

订购条件有什么规定吗?此外,endDate 条件始终被忽略。

旁注:如果您对最后的 AND 1 感到好奇,那是因为我“构造”了我的查询条件。

最佳答案

Is there any rule about ordering conditions?

对于命名占位符 - 否。

This doesn't work.

好吧,调试一下。
从设置PDO为异常模式开始

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

并研究错误消息

关于php - WHERE 条件中的顺序如何影响使用 PDO::bindParam() 的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989608/

相关文章:

php - 如何使用 PHP PDO 在 mySQL 中插入多行 JSON 对象数据?

mysql - 构建 docker 容器后运行自定义 SQL 查询

mysql - ActiveRecord 范围查找今天创建的记录?

mysql - 这个触发器语法有什么问题?

php - 如果结果集为空,MySQL 和 pdo::fetchColumn() 返回什么?

php - 使用两个类查询 PDO

php - 如何在 PHP 中启用数据库自​​动重新连接?

php - 不确定如何让 mod_rewrite 写入某种格式

php - 如何使用 PDO 动态构建查询

php - 尝试在 Codeigniter 4 中启动分页时返回错误