我有,在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总是被设置为true。即使它看起来没有任何问题,我也无法使它工作。
脚本进入准备(我通过回声测试),这意味着它准备成功。它也进入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 **语句是怎么样的?它是否期望你在执行中不提供参数? – sqlab
我正在使用'DB :: getInstance() - >查询(“SELECT email FROM user_credentials WHERE user_id =?”,array(1));'我正在编辑我的帖子以显示getInstance的样子。 – markovchain
对于问号你不需要绑定参数,但是无论哪种方式,你都应该在执行调用中提供参数。 – sqlab