PDO使用绑定参数行为不当

时间:2013-06-01 17:25:01

标签: php pdo

我有简单的SQL查询,可以从绑定变量中受益,所以我写的是这样的:

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id=':user_id' AND date(start_time)=date(':on_specific_day')");
$stmt->bindParam(':user_id',$where['user_id']); 
$stmt->bindParam(':on_specific_day',$where['on_specific_day']); 

正如您所看到的,有一个名为where的关联数组,用于存储我的where条件。当我执行此语句时,它不会返回任何错误,但行计数为零。如果我放弃使用绑定变量的梦想并执行此操作:

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id='{$where['user_id']}' AND date(start_time)=date('{$where['on_specific_day']}')");

查询运行正常并在我的测试用例中返回2个结果。有人可以帮我摆脱疯狂。 :^)

1 个答案:

答案 0 :(得分:3)

您无需用引号标记PDO parameters

$stmt = $this->db->prepare("SELECT * FROM activities WHERE user_id=:user_id AND date(start_time)=date(:on_specific_day)