Codeigniter数据库错误

时间:2014-02-04 14:38:11

标签: php mysql codeigniter

所以我正在重写我们的内部Intranet以使用CodeIgniter框架。 到目前为止,我一直在使用$this->db->affected_rows()来确定是否插入,更新或删除了行。

如果此方法返回TRUE,那么我认为SQL已成功。不幸的是,当没有记录更新时,这会失败。

例如,我想更新数据库中的所有记录,如果没有任何记录与where子句匹配,即使SQL实际工作,affected_rows()将返回FALSE,因为没有更新。

我查看了Stackoverflow,人们建议使用$this->db->_error_message()_error_code()等价物。从我读过,使用这些函数,我需要关闭DB_DEBUG,我不想这样做,因为我仍然在私有服务器上重写内部网,并且想要轻松查看错误消息而无需浏览日志文件。

有没有办法让db_debug设置为true,并根据查询是否成功调用返回TRUE或FALSE的方法?

1 个答案:

答案 0 :(得分:0)

您可以关闭DB_DEBUG并仍然查看错误消息(如果有)。

$config['db_debug'] = FALSE;

...

$this->db->query('UPDATE all.tables SET x=1 WHERE y=2');//update all tables; y is never 2

$ar = $this->db->affected_rows();

if($ar === 0){
    if($this->db->_error_message()){
        //there was a db error; print it
        echo $this->db->_error_message();//and error_code if you want
    }else{
        echo "No records affected, also no db error <br>";
        echo $this->db->last_query();//see last query if you want
    }
}else{
    echo "$ar rows affected";
}