我正在为我的codeigniter网站整理几个模型,似乎无法在文档中找到如何处理使用Active Record系统时可能发生的错误的任何文字。
该文档演示了如何执行CRUD以及一些相对较复杂的查询,但没有讨论错误处理。我做了一个快速的谷歌搜索,似乎Active Record类不会抛出异常。是这样的吗?没有尝试抓住...
那么,您如何编码处理codeigniter中的数据库错误? (连接失败,重复密钥,参考完整性损坏,截断,数据类型错误等)
答案 0 :(得分:58)
无论您是否使用活动记录类,都可以使用$this->db->_error_message()
和$this->db->_error_number()
访问数据库错误。
如果您使用的是mysql数据库,这些函数分别等同于mysql_error()
和mysql_errno()
。您可以通过查看您正在使用的数据库的数据库驱动程序的源代码来查看这些函数。它们位于系统/数据库/驱动程序中。
因此,在运行查询后,您可以使用以下内容检查错误:
if ($this->db->_error_message()) \\handle error
答案 1 :(得分:12)
直接来自CodeIgniter支持论坛:
$res = $this->db->query($str);
if (!$res) {
// if query returns null
$msg = $this->db->_error_message();
$num = $this->db->_error_number();
$data['msg'] = "Error(".$num.") ".$msg;
$this->load->view('customers_edit_view',$data);
}
请注意,您还可以通过进入CI应用配置文件并设置以下内容来记录Active Record错误:
$config['log_threshold'] = 1;