我有,在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