所以我正在重写我们的内部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的方法?
答案 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";
}