2017-07-11 213 views
1

我工作的系統中,只要數據存在於數據庫中,每項工作都可以正常工作。但我想對空數據庫進行測試。當我這樣做時,幾乎在每一頁上都會遇到類似的問題。PHP CodeIgniter異常處理

未捕獲的異常是encounteredType:的ErrorMessage:調用一個 成員函數行()布爾

我知道是什麼問題在這裏,但我想知道我應該怎麼處理異常。我不希望錯誤消息在空數據庫的情況下干擾我的系統。一種解決方案是關閉error_reporting,但我正在尋找更好的解決方案。

+0

在結果變量上使用isset或!empty。如果它沒有得到任何數據,請不要使用row()。否則做任何你想做的事情。 –

回答

0
  1. 如果確定有一行查詢:

    $sql = "SELECT * FROM table WHERE id = '1'"; 
    $query = $this->db->query($sql); 
    
    if($query->num_rows() == 1) 
    { 
        $row = $query->row(); 
    } 
    

2.如果結果可能包含多行:

$sql = "SELECT * FROM table"; 
$query = $this->db->query($sql)->result(); 

if(!empty($query)) 
{ 
    foreach($query as $row) 
    { 
     //do something 
    } 
} 

isset將拋出警告如果變量不存在。 empty()不會拋出警告