php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #64705 errorInfo property of PDOException is null when PDO::__construct() fails
Submitted: 2013-04-24 17:11 UTC Modified: 2014-06-04 09:12 UTC
Votes:4
Avg. Score:4.0 ± 0.7
Reproduced:2 of 3 (66.7%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: christian dot lawrence at calorieking dot com Assigned:
Status: Verified Package: PDO Core
PHP Version: 5.3.24 OS:
Private report: No CVE-ID:
Have you experienced this issue?
Rate the importance of this bug to you:

 [2013-04-24 17:11 UTC] christian dot lawrence at calorieking dot com
Description:
------------
PDO::__construct() will always throw a PDOException if the connection fails regardless of which PDO::ATTR_ERRMODE is currently set.  The PDOException has a public property $errorInfo which corresponds to PDO::errorInfo() or PDOStatement::errorInfo().

When PDO::__construct() throws a PDOException say, because of a database server issue, the public property PDOException::$errorInfo is set to NULL and the return value from PDOException::getCode() is not the expected string SQLSTATE error code.

I would have expected a non-NULL PDOException::$errorInfo to be set when the exception is caught.

Test script:
---------------
<?php

// Valid DSN, but with wrong password to trigger the exception
$dsn = 'pgsql:host=localhost;dbname=test;user=foo;password=wrongpass';
try {
  $pdo = new \PDO($dsn, null, null);
} catch (\PDOException $e) {
  var_dump($e->errorInfo);
  var_dump($e->getCode());
  var_dump($e->getMessage());
}

?>

Expected result:
----------------
array(3) {
  [0] =>
  string(5) "08006"
  [1] =>
  int(7)
  [2] =>
  string(53) "FATAL:  password authentication failed for user "foo""
}
string(5) "08006"
string(73) "SQLSTATE[08006] [7] FATAL:  password authentication failed for user "foo""


Actual result:
--------------
NULL
int(7)
string(73) "SQLSTATE[08006] [7] FATAL:  password authentication failed for user "foo""


Patches

Add a Patch

Pull Requests

Pull requests:

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-01-01 12:32 UTC] felipe@php.net
-Package: PDO related +Package: PDO PgSQL
 [2014-06-04 09:12 UTC] mbeccati@php.net
-Status: Open +Status: Verified -Package: PDO PgSQL +Package: PDO Core
 [2014-06-04 09:12 UTC] mbeccati@php.net
I started writing a new common phpt file in order to check the behaviour of drivers other then pgsql and it seems that pdo_sqlite and pdo_mysql are affected too, so I'm changing the bug type to PDO Core.
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Wed Jun 28 02:01:37 2017 UTC