3

我正在使用 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 一起使用时需要更改一些额外的配置设置?

4

1 回答 1

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 方式编写查询。

于 2013-06-01T18:29:09.477 回答