【发布时间】:2014-03-14 17:42:13
【问题描述】:
我在 db.php 文件中有以下代码:
public function query($sql, $params = array()){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)){
$x = 1;
if(count($params)){
foreach($params AS $pa){
$this->_query->bindValue($x, $pa);
$x++;
}
}
#MASSIVE ERROR
#correctthis
if($this->_query->execute()){
echo 'success';
$this->_result = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_query = $this->_query->rowCount();
} else {
$this->_error = true;
}
}
return $this;
}
public function error(){
return $this->_error;
}
我的问题是$this->_query->execute() 总是为假,这意味着 $_error 总是被设置为真。我无法让它工作,即使它似乎没有任何问题。
脚本进入prepare(我通过echoing测试过),表示prepare成功。它还进入 foreach 循环,因此必须绑定这些值。但它似乎无法执行。为什么?
编辑:
我使用DB::getInstance()->query("SELECT email FROM user_credentials WHERE user_id = ?", array(1)) 调用查询,getInstance 是这样的:
public static function getInstance(){
if(!isset(self::$_instance)){
self::$_instance = new DB();
}
return self::$_instance;
}
【问题讨论】:
-
你的 $sql 语句是什么样的?它是否期望您在执行中未提供的参数?
-
我正在使用
DB::getInstance()->query("SELECT email FROM user_credentials WHERE user_id = ?", array(1));,我正在编辑我的帖子以显示 getInstance 的样子。 -
对于问号,您不需要绑定参数,但无论哪种方式,您都应该在执行调用中提供参数。