我正在使用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,或者有一些额外的配置设置,需要改变时使用PDO与CodeIgniter?
如果您查找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 Driver,我看不出选择它比mysql有什么真正的优势,反之亦然,因为无论如何你都会用CI的方式写你的查询。