如何在 Codeigniter 中将属性设置为 PDO 连接
How to set Attribute to PDO connection in Codeigniter
如何在 Codeigniter 的 PDO 数据库句柄上设置属性 (PDO::ATTR_ERRMODE)?
有两种方法:
1. 懒惰(hacky)方式
在system/core/database/drivers/pdo/pdo_driver.php中加入如下代码(在CI 3):
public function db_connect($persistent = FALSE)
{
$this->options[PDO::ATTR_PERSISTENT] = $persistent;
// Added code start
$this->options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
// Added code end
try
{
return new PDO($this->dsn, $this->username, $this->password, $this->options);
...
}
2。正确的方法
Extend Database Driver 并添加相同的行
注意:如果您将在 Codeigniter 中设置 PDO::ERRMODE_EXCEPTION
,即使在生产环境中,它也会显示异常错误。
我认为更好的选择是使用 MY_Model(然后对其进行扩展,然后在整个应用程序中可用)并在构造中定义如下内容:
$this->db->conn_id->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
注意 conn_id 允许您访问主 PDO 对象。
如何在 Codeigniter 的 PDO 数据库句柄上设置属性 (PDO::ATTR_ERRMODE)?
有两种方法:
1. 懒惰(hacky)方式
在system/core/database/drivers/pdo/pdo_driver.php中加入如下代码(在CI 3):
public function db_connect($persistent = FALSE)
{
$this->options[PDO::ATTR_PERSISTENT] = $persistent;
// Added code start
$this->options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
// Added code end
try
{
return new PDO($this->dsn, $this->username, $this->password, $this->options);
...
}
2。正确的方法
Extend Database Driver 并添加相同的行
注意:如果您将在 Codeigniter 中设置 PDO::ERRMODE_EXCEPTION
,即使在生产环境中,它也会显示异常错误。
我认为更好的选择是使用 MY_Model(然后对其进行扩展,然后在整个应用程序中可用)并在构造中定义如下内容:
$this->db->conn_id->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
注意 conn_id 允许您访问主 PDO 对象。