2014-05-02 133 views
1

我有一個非常簡單的SELECT查詢內返回false(失敗)的PHP類的上下文,但我無法檢索相關的錯誤信息。奇怪的是,調用工作正常,直到我不得不重新組織mysql數據庫 - 沒有修改PHP代碼顯然失敗 - 結果是錯誤的 - 但錯誤信息在哪裏?mysqli查詢返回false但沒有錯誤消息

代碼如下:

<?php 
class Database { 
    private $_connection; 
    private $_result; 
    private $_lastQuery; 
    private $_error; 

    public function __construct($dbase) { 
     $this->_connection = new mysqli(DB_SERVER, DB_USER, DB_PASS, $dbase); 
     if (mysqli_connect_error()) { 
      trigger_error("failed to connect to MySQL: " . mysqli_connect_error(), E_USER_ERROR); 
     } 
     mysqli_set_charset($this->_connection, 'utf8'); 
    } 

    public function query($query) { 
     $this->_lastQuery = $query; 
     $this->_result = mysqli_query($this->_connection, $query); 
     $this->_error = $this->_connection->error; 
     return $this->_result; 
    } 
} 

沒有錯誤字符串出現在$此 - > _錯誤;在調試過程中(PHPStorm)檢查時也沒有顯示。 通過命令行執行查詢時,會生成(預期)錯誤消息。

+0

$ this - > _ error從哪裏來?它沒有在你的數據庫類中定義。 –

+1

TBH,我不完全確定這一點,但不應該'$ this - > _ error = $ this - > _ connection-> error;'是$ this - > _ error = $ this - > _ connection - > _ error; '? –

+0

爲什麼你要將查詢結果存儲在類變量中? –

回答

2

看來,問題實際上是與xdebug。

+0

這裏的同一探索,我會很高興發佈整個班級,所有80行。但是如果你用這個錯誤設置了一些變量,你可能會在調試器中看到這個錯誤(僅在這個變量中):$ myerr = $ mysqli-> error; // $ mysqli-> error是空的,而$ myerr不是 – Tertium

相關問題