I can't seem to get any error message from PDO:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
It is giving out only:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
setAttribute doesn't help anything.
It's PHP 5.3.3 Apache 2.0 Handler
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
What can I do to get error information?
I too was trying to get the information from
errorInfo()
at the database handle level, but I ended up getting the information from the statement level withPDOStatement::errorInfo()
Per PHP web site:
You need to first
execute
the query and then check for errors: So do it like this:and then check for errors. Then you will get errors, if any.
setAttribute will cause PDO to throw up errors or exceptions - the latest when you execute the query.
For emulated prepared statements, there is no check in
prepare()
:But there will be one in
execute()
when the query gets sent to the server.However, the mySQL driver supports native prepared statements since mySQL 4.1 anyway, so this shouldn't apply. Using
must cause an exception for the query you use.
This will print error code as well its corresponding detailed message.
Advice: this is just a demonstration. Just use for debugging purpose. Don't enable to show error messages to the public in a release version.