我试图动态地给出值以执行查询。但是我在execute()函数中给出的值,它不接受它。这是使用,
$user_id=1;
if(count($_POST) > 0){
$date=$_POST['date'];
}else{
$date= "'" . date("Y-m-d") . "'";
}
$sth=$pdo->prepare("select goal from daily where user_id=:user_id and goal_date=:goal_date");
$sth->execute(array(':user_id'=>$user_id,
':goal_date'=>$date ));
$sth->setFetchMode(PDO :: FETCH_ASSOC);
从上面的代码我得到空的结果。但是当我直接给它给它一个像这样的正确值时,
$sth=$pdo->prepare("select goal from daily where user_id=1 and goal_date='2014-05-02'");
$sth->execute();
$sth->setFetchMode(PDO :: FETCH_ASSOC);
提前致谢
答案 0 :(得分:0)
PDO的一个功能是它为您引用绑定参数。根据文档,当将绑定值数组传递给execute()时,“所有值都被视为PDO :: PARAM_STR”。如果要显式指定绑定参数的数据类型,请使用bindParam()或bindValue()
这意味着当你正在进行$date= "'" . date("Y-m-d") . "'";
时,你实际上是在引用字符串两次。
相反,只需执行此操作:$date = date("Y-m-d");