PDO database class review
I have set up something very similar with a couple changes. In __contruct() I assign the credentials to variables, then call an instance to start the PDO connection. I also use try-catch for each PDO statement to make sure that I am not getting any errors.

private $_pdo = null;
private $_host, $_dbname, $_uname, $_pass;
private $_sql, $_result;
private $_preparedStmt;

public function __construct($host, $dbname, $username, $password) {
    // You could run checks here to make sure that...
    // no values or specific values are not equal to ''
    $this-&gt;_host = $host;
    $this-&gt;_dbname = $dbname;
    $this-&gt;_uname = $username;
    $this-&gt;_pass = $password;
    $this-&gt;startPDO();
}

// ... Later on in code, under Private functions comment tag
private function startPDO() {
    try {
        $this-&gt;_pdo = new PDO('mysql:host='.$this-&gt;_host.';dbname='.$this-&gt;_dbname, $this-&gt;_uname, $this-&gt;_pass);
        $this-&gt;_pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        //$this-&gt;handleFatalErr($e-&gt;getMessage(), 'connection'); // 'die' error handling
        //$this-&gt;handleErr($e-&gt;getMessage(), 'connection'); // Non-'die' error handling
    }
}


In each function I check the connection, I would recommend something similar. You could either kill the script if there is no connection or you could re-connect using the current variables $this-&gt;_host, etc:

public function query($sql) {
    $this-&gt;checkConnection();
    $this-&gt;_sql = $sql; // This is used for logging and for a getter function
    try {
        $this-&gt;_result = $this-&gt;_pdo-&gt;query($this-&gt;_sql);
    } catch (PDOException $e) {
        //$this-&gt;handleFatalErr($e-&gt;getMessage(), 'connection');
    }
}

private function checkConnection() {
    ($this-&gt;getPDO() === null) ? die('There is no connection to the database, please re-establish connection.') : NULL;
        //$this-&gt;handleFatalErr(self::ERR_CONNECTION_LOST, 'CONNECTION_LOST');
}

private function getPDO() {
    return $this-&gt;_pdo;
}

public function close() {
    (isset($this-&gt;_pdo) &amp;&amp; $this-&gt;_pdo != null) ? $this-&gt;_pdo = null : NULL;
}