mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$dbh = new PDO('mysql:host=localhost;dbname=someDB', 'username', 'wrongPassword');
} catch (PDOException $e) {
// There was a problem creating the connection so lets kill the script with some feedback to the user
die($e->getMessage());
}
// If we get here then we know that $dbh has been created successfully
// We can now explicitly set how database errors are handled for this connection
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
<?php // demo/temp_elepil.php
ini_set('display_errors', TRUE);
error_reporting(E_ALL);
echo '<pre>';
// THE ABSOLUTE MINIMUM YOU MUST UNDERSTAND TO USE PHP AND PDO/MYSQL
// MAN PAGE: http://php.net/manual/en/book.pdo.php
// MAN PAGE: http://php.net/manual/en/class.pdo.php
// MAN PAGE: http://php.net/manual/en/class.pdoexception.php
// MAN PAGE: http://php.net/manual/en/class.pdostatement.php
// MAN PAGE: http://php.net/manual/en/pdo.construct.php
// MAN PAGE: http://php.net/manual/en/pdo.setattribute.php
// MAN PAGE: http://php.net/manual/en/pdo.query.php
// MAN PAGE: http://php.net/manual/en/pdo.prepare.php
// MAN PAGE: http://php.net/manual/en/pdo.prepare.php#97942 <-- NO CURSOR SCROLLING
// MAN PAGE: http://php.net/manual/en/pdostatement.execute.php
// MAN PAGE: http://php.net/manual/en/pdo.lastinsertid.php
// MAN PAGE: http://php.net/manual/en/pdostatement.bindparam.php
// MAN PAGE: http://php.net/manual/en/pdostatement.rowcount.php
// MAN PAGE: http://php.net/manual/en/pdostatement.fetchall.php
// MAN PAGE: http://php.net/manual/en/pdostatement.fetchobject.php
// DATABASE CONNECTION AND SELECTION VARIABLES ARE INCOMPLETE HERE
$db_host = "localhost";
$db_name = "foo";
$db_user = "bar";
$db_word = "baz";
// WARNING: AN UNCAUGHT CONNECT ERROR WILL BARK OUT THE DB CREDENTIALS!
// $pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, 'foo');
echo '<h1>FAILURE</h1>';
// OPEN A CONNECTION TO THE DATA BASE SERVER AND SELECT THE DB
$dsn = "mysql:host=$db_host;dbname=$db_name";
try
{
$pdo = new PDO($dsn, $db_user, $db_word);
}
catch(PDOException $exc)
{
var_dump($exc);
trigger_error($exc->getMessage(), E_USER_WARNING);
}
// SHOW THE (FAILED) PDO CONNECTION OBJECT
var_dump($pdo);
echo PHP_EOL;
// NOW TRY IT AGAIN WITH THE RIGHT CREDENTIALS
require_once('RAY_live_data.php');
echo '<h1>SUCCESS</h1>';
// OPEN A CONNECTION TO THE DATA BASE SERVER AND SELECT THE DB
$dsn = "mysql:host=$db_host;dbname=$db_name";
try
{
$pdo = new PDO($dsn, $db_user, $db_word);
}
catch(PDOException $exc)
{
var_dump($exc);
trigger_error($exc->getMessage(), E_USER_WARNING);
}
// SHOW THE (HAPPY) PDO CONNECTION OBJECT (ENTIRELY EMPTY!)
var_dump($pdo);
echo PHP_EOL;
The PDO::ATTR_ERRMODE tells PDO how to handle errors on the database connection.
The PDO constructor (new PDO(...) ) throws a PDOException when there's a problem. The setAttribute() method doesn't effect that at all.