2017-07-11 195 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()不会抛出警告