将MySQL PDO默认设置为抛出异常
在MySQL中使用PDO连接数据库时,我们通常会使用try-catch语句处理异常。但是,如果我们没有设置PDO默认抛出异常,我们就需要在每个查询语句之后手动检查errorinfo()。这既不方便也容易遗漏。本文将介绍如何将MySQL PDO默认设置为抛出异常。
阅读更多:MySQL 教程
方法1:通过设置默认构造函数
通过设置PDO类的默认构造函数,我们可以使其默认抛出异常。以下是代码示例:
class MyPDO extends PDO {
public function __construct(dsn,username = null, password = null,options = null) {
options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
parent::__construct(dsn, username,password, $options);
}
}
在使用PDO连接数据库时,可以使用上面例子中新建的MyPDO类。当出现异常时,将自动抛出异常。
try {
dbh = new MyPDO('mysql:host=localhost;dbname=test',user, pass);dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
dbh->query('SELECT * FROM table_does_not_exist');
} catch (PDOExceptione) {
echo 'Exception: ' . $e->getMessage();
}
方法2:通过PDO的setAttribute()方法
我们也可以通过调用PDO类的setAttribute()方法来设置默认抛出异常。以下是代码示例:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
现在,当我们使用查询语句时,如果发生错误,将自动抛出异常。
try {
dbh->query('SELECT * FROM table_does_not_exist');
} catch (PDOExceptione) {
echo 'Exception: ' . $e->getMessage();
}
总结
通过以上两种方法,我们可以将MySQL PDO默认设置为抛出异常。这样可以使代码更加简洁,减少手动检查errorinfo()的错误可能性,提高代码可读性和可维护性。