PDO PHP Uncaught异常

时间:2012-04-12 13:52:07

标签: php pdo

我目前已切换到使用PDO,但在处理异常方面遇到了麻烦。连接是正确的,查询工作完美,但是当我故意犯错时,错误没有按照我的预期处理。

我已将查询中的表名更改为不存在的表。从下面看到的代码中,我希望页面打印出“数据库错误”,但是却出现了可怕的橙色错误... ...

'未捕获异常'PDOException',消息'SQLSTATE [42S02]:未找到基表或视图:1146表'test.post'不存在'在C:\ wamp \ www \ website \ functions.php上第46行

以下是连接数据库时的代码......

$hostname = 'localhost';
$username = '';
$password = '';
try{
    $dbh = new PDO("mysql:host=$hostname;dbname=test", $username, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     print ("Database Error");
}

我犯了错误还是有不同的方法来处理PDO错误?

1 个答案:

答案 0 :(得分:5)

连接后,您需要设置错误处理:

$dbh = new PDO("mysql:host=$hostname;dbname=test", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

编辑:请注意,异常会在抛出的位置被捕获,因此您需要在查询周围放置try catch块,您使用的是当连接只捕获异常时(如果有的话,请参阅@Crontab的评论)。