php - PDO执行函数是否仅限于接受参数?

标签 php mysql pdo

我有一个工作的 pdo 集成数据库类。我的所有查询都非常有效地工作,但是当我尝试传递某个值时,我陷入了困境。该值为:

DATE_SUB('2010-11-03', INTERVAL 30 DAY)

现在,我的类查询工作已准备就绪,如下所示:

SELECT DATE(added) AS date FROM data WHERE DATE(added) <= ?

当我尝试将值:DATE_SUB('2010-11-03', INETRVAL 30 DAY)传递给execute()函数时,没有收到结果(但查询正在成功执行)。

我尝试发送原始值“2010-11-03”。它工作正常,但不支持此功能。 有人知道这个 mysql 函数没有被传递给执行函数吗?

最佳答案

您不能使用占位符替换我的 SQL 查询的这一部分:占位符及其相应的绑定(bind)值只能对应于值。

当您传递 2010-11-03 时,您正在传递一个值 - 所以它可以工作。

当您尝试传递 DATE_SUB('2010-11-03', INTERVAL 30 DAY) 时,它不是一个值 - 所以它不起作用。


在这里,您必须重写您的Prepared语句,因此占位符对应于日期,而不是整个表达式:

SELECT DATE(added) AS date 
FROM data 
WHERE DATE(added) <= DATE_SUB(?, INTERVAL 30 DAY)

(如果需要,30 也可以替换为占位符)

关于php - PDO执行函数是否仅限于接受参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338051/

相关文章:

php - 使用 PHP 更新数据库表不起作用

php - Laravel Redis 错误 - 无法将 SAVE 与连接集群一起使用

php - 超链接行获取另一个页面中的行数据,PHP?

mysql - MySQL 中字符串字段和生日的数据类型

java - Mysql+JDBC+Linux : executeQuery returns empty result set when it shouldn't

php - 如何使这个查询运行得更快

php - PDO 和 MySQLi 准备好的语句有什么区别?

php - MySQLi 查询不会执行

php - MySQL 未知列错误,但结果似乎正常,并且查询在 phpMyAdmin 中工作

PHP PDO 和使用 SELECT COUNT(*) 的查询