我正在使用CodeIgniter 2.1.3,我正在使用PDO的活动记录类作为我的数据库驱动程序。
我遇到了CodeIgniter没有使用错误的更新语句报告错误的问题。我可以编写一个明显违反重复键或列名不正确的查询,但CodeIgniter没有给出任何错误:
echo $this->db->_error_message(); //returns nothing
echo $this->db->_error_number(); //returns '0000'
但是,只要我转换为使用MySQL
作为驱动程序,我就会收到错误消息。
我甚至尝试$this->db->query(.... //violating statement
绕过活动记录类,没有运气和更多错误。
我有$db['default']['db_debug'] = TRUE;
。
使用PDO时,我是否运气不好,或者在使用带有CodeIgniter的PDO时是否需要更改一些其他配置设置?
答案 0 :(得分:2)
如果您查找PDO驱动程序,您可以看到PDO连接已完成PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT
,但不会丢失任何错误。
通常,您希望PDO抛出异常,在这种情况下,您使用连接选项传递以下内容。
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false
);
如果要使用PDO,请直接使用PDO。 PDO是一个很好的抽象层。如果你打算使用CI DB驱动程序,我认为没有任何真正的优势选择这个优于mysql,反之亦然,因为无论如何你将以CI方式编写查询。