22
我总是想,如果发生错误,PDO抛出异常抛出异常,因为我总是使用PDO像这样:设置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.');
}
这将是很好,如果有一个配置文件,我可以编辑为了让PDO默认引发异常 - 这可能吗?
我想这样做的原因是,所以我没有写这行每次:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
更新 - 因为我已经创建了处理数据库的访问对我来说是库(包括设置PDO来抛出异常)。
的问题,我不认为你所说的其实是可能的。那么,呃,如果这是你经常做的事情,那么为什么不围绕这个功能创建一个对象,或者至少将这个功能分成一个程序化包含的文件? – rdlowrey
实际上,如果您只需在建立连接时捕获PDO异常,则不需要设置ATTR_ERRMODE属性。 PDO :: __ construct()将始终抛出PDOException,如果连接失败,无论当前设置了哪个PDO :: ATTR_ERRMODE – rodrunner
为了获取错误信息(如果存在)并避免转义序列或SQL,不需要设置PDO注意建议使用Prepared Statements,PDOStatement :: errorInfo返回您正在查找的信息,而不管ATT_ERRMODE。 – Ivanzinho