如何检查PDO连接?

时间:2017-09-07 18:48:57

标签: php mysql pdo

这是我的代码:

<?php

try{
    // connect to database and select database
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "spy";
    $dbh_conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $dbh_conn->exec("set names utf8");
    $dbh_conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

我的代码也适用。但是我看到了类似的代码来检查这样的连接:

if ( !$dbh_conn ){
    // Something Went Wrong
} else {
    // All Fine
}

我需要这个条件吗?或者使用try catch足以检查数据库连接?

1 个答案:

答案 0 :(得分:1)

这取决于您为PDO::ATTR_ERRMODE设置的内容。在您的情况下,它被设置为PDO::ERRMODE_EXCEPTION,因此错误将引发异常。

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

但是,当您连接时(即__constructor()中调用PDO时),此错误模式不会应用,因为始终会抛出PDOException

  

如果连接失败,PDO :: __ construct()将始终抛出PDOException,无论当前设置了哪个PDO :: ATTR_ERRMODE。未捕获的例外是致命的。

您可以阅读有关不同模式的here