gpt4 book ai didi

php - PDO - 尝试在 mysql 上绑定(bind) BETWEEN 中的值时出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:03 25 4
gpt4 key购买 nike

我正在尝试使用 PDO 和 MySql 创建一个选择语句。我有以下代码:

$this->bind[':created'] = "'" . (new DateTime('First day of this month'))->format('Y-m-d') . "' AND '" . date('Y-m-d') . "'"; 
$this->where[] = "created BETWEEM :created";

如您所见,我在 MySql documentation 之后用引号将日期括起来但是 PHP 正在转义它,我收到了一个错误。

'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'created BETWEEN '\'2015-07-01\' AND \'2015-07-24\'' '

那么,我如何使用 PDO::bindValue() 的范围日期?

更具体地说,我想得到这个结果:

SELECT * FROM table WHERE created BETWEEN '2015-07-01' AND '2015-07-24'

而不是:

SELECT * FROM table WHERE created BETWEEN '\'2015-07-01\' AND '\2015-07-24\''

谢谢。

最佳答案

绑定(bind)是针对单个值的。您正在尝试绑定(bind)多个值。你需要:

... WHERE foo BETWEEN :start AND :end

和两个绑定(bind)调用。

请记住,占位符基本上有点像变量,只是数据库知道这个“变量”只能表示一个值。它不会将您传入的值分开并尝试使其符合声明,所以

foo BETWEEN :thingie

没什么不同
foo BETWEEEN '$var'

就插入值的数量而言。

关于php - PDO - 尝试在 mysql 上绑定(bind) BETWEEN 中的值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com