Php PDO-在mysql上尝试绑定介于两者之间的值时出错

Php PDO-在mysql上尝试绑定介于两者之间的值时出错,php,mysql,pdo,escaping,between,Php,Mysql,Pdo,Escaping,Between,我正在尝试使用PDO和MySql生成select语句。我有以下代码: $this->bind[':created'] = "'" . (new DateTime('First day of this month'))->format('Y-m-d') . "' AND '" . date('Y-m-d') . "'"; $this->where[] = "created BETWEEM :created"; 如您所见,我在日期后面加了一个引号字符,但PHP正在转义它,我得

我正在尝试使用PDO和MySql生成select语句。我有以下代码:

$this->bind[':created'] = "'" . (new DateTime('First day of this month'))->format('Y-m-d') . "' AND '" . date('Y-m-d') . "'"; 
$this->where[] = "created  BETWEEM :created";
如您所见,我在日期后面加了一个引号字符,但PHP正在转义它,我得到了一个错误

'您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“2015-07-01”和“2015-07-24”之间创建的”附近使用的正确语法

那么,如何将范围日期与PDO::bindValue()一起使用呢

更具体地说,我希望得到以下结果:

从“2015-07-01”和“2015-07-24”之间创建的表格中选择*

而不是:

从“2015-07-01”和“2015-07-24”之间创建的表格中选择*


谢谢。

绑定用于单个值。您正在尝试绑定多个值。你需要:

... WHERE foo BETWEEN :start AND :end
和两个绑定调用

记住,占位符基本上有点像变量,只是DB知道这个“变量”只能代表一个值。它将而不是将您传入的值分开,并尝试使其符合语句,因此

foo BETWEEN :thingie

foo BETWEEEN '$var'

就插入的值的数量而言。

绑定用于单个值。您正在尝试绑定多个值。你需要:

... WHERE foo BETWEEN :start AND :end
和两个绑定调用

记住,占位符基本上有点像变量,只是DB知道这个“变量”只能代表一个值。它将而不是将您传入的值分开,并尝试使其符合语句,因此

foo BETWEEN :thingie

foo BETWEEEN '$var'

就插入的值的数量而言。

这里是不是输入错误
createbetweem:created
错误消息似乎正确。为什么不将其拆分为两个参数,然后分别绑定它们呢?@Sean yea我就是这么想的<代码>$this->where[]=“在:createdF和:createdT之间创建”这是一个打字错误吗
createbetweem:created
错误消息似乎正确。为什么不将其拆分为两个参数,然后分别绑定它们呢?@Sean yea我就是这么想的<代码>$this->where[]=“在:createdF和:createdT之间创建”甚至
。。。在:已创建和:已创建之间
否?我认为这一点更清楚-只是想区分OP所做的事情的实际问题。@ficuscr重用相同的占位符不起作用,除非启用了see仿真模式-和@ficuscr:在相同的值之间进行选择有什么意义?也可以在那一点上创建
foo=:甚至
。。。在:已创建和:已创建之间
否?我认为这一点更清楚-只是想区分OP所做的事情的实际问题。@ficuscr重用相同的占位符不起作用,除非启用了see仿真模式-和@ficuscr:在相同的值之间进行选择有什么意义?最好在那一点上创建
foo=:created