设置PDO默认引发exception

我总是希望PDO在发生错误时抛出exception,因为我总是使用PDO,如下所示:

try { $dbh = new PDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // some queries } catch (PDOException $e) { error_log('PDO Exception: '.$e->getMessage()); die('PDO says no.'); } 

这将是很好,如果有一个configuration文件,我可以编辑,使PDO默认抛出exception – 这可能吗?

我想要这个的原因是我不必每次写这行:

 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

更新 – 我自从创build了一个为我处理数据库访问的库(包括设置PDO来抛出exception)。

您可以将setAttribute函数添加到构造函数中:

 $pdo = new PDO('mysql:host=localhost;dbname=someTable', 'username', 'password', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION )); 

但我找不到一种方法将其添加到php.ini文件或其他configuration文件。

扩展rdlowrey的评论,最简单的方法是:

 class MyPDO extends PDO { public function __construct($dsn, $username = null, $password = null, array $driver_options = null) { parent :: __construct($dsn, $username, $password, $driver_options); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } } 

那么调用简直就是一个问题

 $dbh = new MyPDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);