Codeigniter - 使用活动记录时处理错误

Ser*_*gio 48 php activerecord codeigniter

我正在为我的codeigniter网站整理几个模型,似乎无法在文档中找到如何处理使用Active Record系统时可能发生的错误的任何文字.

该文档演示了如何执行CRUD以及一些相对较复杂的查询,但没有讨论错误处理.我做了一个快速谷歌搜索,似乎Active Record类不会抛出异常.是这样的吗?没有尝试赶上......

那么,你如何编码处理codeigniter中的数据库错误?(连接失败,重复密钥,参考完整性损坏,截断,数据类型错误等)

emm*_*han 58

无论您是否使用活动记录类,都可以使用$this->db->_error_message()和访问数据库错误$this->db->_error_number().

如果您使用的是MySQL数据库,这些功能相当于mysql_error()mysql_errno()分别.您可以通过查看您正在使用的数据库的数据库驱动程序的源代码来查看这些函数.它们位于系统/数据库/驱动程序中.

因此,在运行查询后,您可以使用以下内容检查错误:

if ($this->db->_error_message()) \\handle error
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考 - 仅当数据库配置文件中的db_debug标志设置为FALSE时才有效.默认情况下,在CI 2.1的新安装中将其设置为TRUE (18认同)

Pet*_*nan 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);
} 
Run Code Online (Sandbox Code Playgroud)

请注意,您还可以通过进入CI应用程序配置文件并设置以下内容来记录Active Record错误:

$config['log_threshold'] = 1;
Run Code Online (Sandbox Code Playgroud)