PDO 和 MySQL 'between'

7

我正在尝试使用PDO和MySQL的'between'查询。以下是我的代码:

$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  

$start_date = date('Y-m-d H:i:s', mktime(0, 0, 0, 11, 1, 2009));
$end_date = date('Y-m-d H:i:s', mktime(23, 59, 59, 11, 30, 2009));

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN ':start_date' AND ':end_date'");
$STH->bindParam(':start_date', $start_date, PDO::PARAM_STR);
$STH->bindParam(':end_date', $end_date, PDO::PARAM_STR);
$STH->execute();
var_dump($row);

返回的是一个数组,其中'0'或'NULL'用于表示值。当我硬编码结束日期时,它表现得好像start_date设置为-1,并将所有end_date之前的行都返回给我。那么,我在这里做错了什么?
2个回答

12

不要用单引号包裹值。

$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");

两个答案都是正确的,但是因为你回复得比较快,我会把这个标记为答案。哈哈,谢谢! - Samsquanch

6
不要在参数周围加引号:
$STH = $DBH->prepare("SELECT * FROM `table` WHERE `start_date` BETWEEN :start_date AND :end_date");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接