Re: PDO PgSQL: _pdo_pgsql_notice
| From: | Matteo Beccati | Date: | Tue, 06 Oct 2009 22:31:28 +0000 |
| Subject: | Re: PDO PgSQL: _pdo_pgsql_notice | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45674@lists.php.net to get a copy of this message | ||
Hi,
>> Please allow some time for me to check how they are currently dealt with
>> in the pgsql extension and to see how they can be implemented in the
>> PDO driver.
>
> Actually, the PosgreSQL driver for PDO don't report
> notices.. The content of "_pdo_pgsql_notice" is commented !
>
> Thanks a lot for the time you passed/you'll pass !
Here's a proof of concept patch you can apply to the PHP_5_3 branch:
http://www.beccati.com/misc/php/pdo_pgsql_notices_php5_3.patch
I still need to clean it up a bit and discuss it with the team, but
here's how it currently works:
$db = new PDO(...);
$db->setAttribute(PDO::PGSQL_ATTR_ENABLE_NOTICES, true);
$db->exec($query); // works with $db->query() too
$aNotices = $db->pgsqlGetNotices();
And you will get an array of the notices raised by the last query.
To sum up:
* Notices are disabled by default, minimising the overhead
* Unlike the pgsql extension which returns the most recent one, multiple
notices can be fetched
* A new query will reset the stored notices
* Available on the base class because exec() doesn't return a PDOStatement
Hope this helps
Cheers
--
Matteo Beccati