pdo execute()函数不接受数组值

时间:2014-05-02 12:31:45

标签: php pdo

我试图动态地给出值以执行查询。但是我在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); 

提前致谢

1 个答案:

答案 0 :(得分:0)

PDO的一个功能是它为您引用绑定参数。根据文档,当将绑定值数组传递给execute()时,“所有值都被视为PDO :: PARAM_STR”。如果要显式指定绑定参数的数据类型,请使用bindParam()bindValue()

这意味着当你正在进行$date= "'" . date("Y-m-d") . "'";时,你实际上是在引用字符串两次。

相反,只需执行此操作:$date = date("Y-m-d");