错误和错误处理
PDO为您提供3种不同的错误处理策略,选择适合你的风格的应用程序的开发。
-
PDO :: ERRMODE_SILENT
这是默认的模式。,PDO将只设置错误代码为您检查使用的 PDO :: ERRORCODE() ,并 PDO :: ErrorInfo在()语句和数据库对象上的方法;如果错误是由于从调用的Statement对象上,你将调用 PDOStatement ::的errorCode()或 PDOStatement :: ErrorInfo在() 方法在该对象上。如果错误是由于从调用的数据库对象,你的数据库对象,而不是调用这些方法。
-
PDO :: ERRMODE_WARNING
除了设置错误代码,PDO将发出一个传统的E_WARNING消息。此设置在调试/测试是非常有用的,如果你只是想看看发生了什么问题,而无需中断应用程序的流程。
-
PDO :: ERRMODE_EXCEPTION
除了 设置错误代码,PDO将抛出一个 PDOException, 并设置其属性,以反映错误代码和错误信息。此设置在调试过程中也很有用,因为这将有效地“吹”的剧本在该点的错误,很快就用手指指着在你的代码中潜在的问题区域(记住:交易将自动回滚,如果异常导致的脚本终止)。
异常模式下也很有用,因为您可以构建您的错误处理比传统的PHP式的警告更清楚,用更少的代码/嵌套在静默模式下运行,并明确检查每个数据库调用的返回值。
PHP中的异常信息的异常。
PDO使用SQL-92 SQLSTATE错误代码字符串标准化,个人的PDO驱动程序负责将它们本地代码映射到相应的SQLSTATE代码。的 PDO :: ERRORCODE() 方法返回一个单一的SQLSTATE代码。如果您需要更具体的有关错误的信息,PDO还提供一个的 PDO ::的errorinfo()的方法,该方法返回一个数组,包含SQLSTATE代码,驱动程序特定的错误代码和驱动程序特定的错误字符串。
Example #1 Create a PDO instance and set the error mode
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>