2012-03-17 142 views
4

當我使用MySQLi對我的php應用程序執行sql查詢時,錯誤總是爲空或爲空,因此禁止我從日誌記錄或打印它們,這是相當令人沮喪的...我沒有遇到任何插入,更新或者在查詢不會引發錯誤時使用下面的代碼段刪除數據。MySQLi獲取查詢錯誤

我使用PHP 5.3.9在Zend服務器社區版5.6.0和mysqli的mysqlnd 5.0.8-dev的 - 20102224 - $修訂:318113 $

這是執行我的查詢代碼:

... 
$this->last= $this->mysqli->query($sql); 
if (!$this->last) 
{ 
    print_r($this->mysqli); 

    var_dump($this->mysqli->error); 
    var_dump($this->mysqli->errno); 
    var_dump($this->mysqli); 
    $msg = 'Query failed [ ' . $this->mysqli->error . ' ]'; 

    $this->mysqli->rollback(); 
    throw new Exception($msg, ...); 
} 
... 

出於測試目的,我insterted一個在我的數據庫名爲「鮑勃」的城市,並試圖插入另一個城市具有相同的名稱,這是印什麼:

mysqli Object 
(
    ... 
    [errno] => 1062 
    [error] => Duplicate entry 'bob' for key 'unq_city' 
    ... 
) 
string(0) "" 
int(0) 
object(mysqli)#6 (18) { 
    ... 
    ["errno"]=> 
    int(0) 
    ["error"]=> 
    string(0) "" 
    ... 
} 

^h如前所述,使用var_dump或訪問我的mysqli對象的errno或錯誤是null。但是print_r顯示了預期的錯誤!我在這裏做錯了什麼?我之前從未使用mysqli,並且正在從oci8遷移,所以我希望這只是一個愚蠢的錯誤。


編輯:

我測試的舊服務器,PHP 5.3.8,5.5.0 ZSCE我的應用程序和mysqlnd 5.0.8-dev的 - 20102224 - $修訂:310735 $具有相同從我可以告訴的配置。所有轉儲和打印都顯示了整個mysqli數據,沒有任何空白字段!

+1

,我認爲是你必須報告一個bug,祝你好運! – ZiTAL 2012-03-17 17:20:52

回答

0

你可以把這個輸出?:

$tmp = array(); 
foreach($this->mysqli as $key => $value) 
    $tmp[$key] = $value; 
print_r($tmp); 
+2

打印的mysqli對象完全是空的,但在舊的服務器上它正常工作,所以我開始懷疑ZSCE或PHP上的錯誤。 – gxtaillon 2012-03-17 17:22:57