Martin AJ
Martin AJ

Reputation: 6697

How can I check PDO connection?

Here is my code:

<?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();
}
?>

My code works as well. But I seen a similar code which checks the connection like this:

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

Well do I need to this ^ condition? Or using try catch is enough to check db connection?

Upvotes: 2

Views: 5229

Answers (1)

ishegg
ishegg

Reputation: 9937

It depends on what you set for PDO::ATTR_ERRMODE. In your case, it's set as PDO::ERRMODE_EXCEPTION, so an error will throw an Exception.

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

This error mode however is not applied when you connect (i.e., when __constructor() is called in PDO), since a PDOException is always thrown:

PDO::__construct() will always throw a PDOException if the connection fails regardless of which PDO::ATTR_ERRMODE is currently set. Uncaught Exceptions are fatal.

You can read about the different modes here.

Upvotes: 1

Related Questions