为什么PHP PDO bindValue没有绑定?

时间:2014-04-26 19:07:47

标签: php pdo bindvalue

我有一个查询我的数据库的功能:

public function query($sql, $params = array()) {
    // reset error back to false
    $this->_error = false;

    // check query to prepare
    if($this->_query = $this->_pdo->prepare($sql)) {
        $x = 1;
        if(count($params)) {
            foreach($params as $param) {
                $this->_query->bindValue($x, $param);
                $x++;
            }
            print_r($this->_pdo->errorInfo());
        }
        // check query execution
        if ($this->_query->execute()) {
            $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
            $this->_count = $this->_query->rowCount();
        } else {
            // error
            $this->_error = true;
        }
    }

    return $this;
}

但是有些东西不起作用。第$this->_query->bindValue($x, $param);行没有做它应该做的事情。没有约束力发生。带有参数的数组似乎很好。 $sql语句也没问题并且正在返回:

INSERT INTO responders (`username`, `password`, `salt`) VALUES (?, ?, ?)

这对于使用bind方法应该是完美的。但经过foreach循环后,没有任何改变,_query var仍然是相同的。因此,根本不会进入数据库。我也树使用errorInfo并回来了:

Array ( [0] => 00000 [1] => [2] => ) 

有人能告诉我这里我缺少的是什么吗?

1 个答案:

答案 0 :(得分:-2)

没有阅读所有杂乱的代码,这就是这个函数必须如何

public function query($sql, $params = array()) {
    $query = $this->_pdo->prepare($sql);
    $query->execute($params);
    return $query;
}

不要忘记set PDO in exceptions mode