Re: Patch: Use notices in PDO

From: Date: Thu, 08 Oct 2009 22:07:37 +0000
Subject: Re: Patch: Use notices in PDO
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-45701@lists.php.net to get a copy of this message
There's an example, using PostgreSQL driver: ---------------------------------------------------- <?php $sql = new PDO('pgsql:host=localhost;dbname=postgres', 'postgres', '', array( PDO::ATTR_LOG_NOTICES => PDO::NOTICES_FETCH )); var_dump($sql); echo "getAttribute: "; var_dump($sql->getAttribute(PDO::ATTR_LOG_NOTICES)); echo 'Notices: '; var_dump($sql->noticeInfo()); $q1 = $sql->query('CREATE OR REPLACE FUNCTION test_notice (v_int integer) RETURNS integer AS $$ BEGIN RAISE NOTICE \'Sympatique % !\', v_int; RAISE NOTICE \'Sympatique un nouvelle fois % !\', v_int; RAISE NOTICE \'Génial maintenant... % \', v_int; RETURN 12; END; $$ LANGUAGE plpgsql;'); $q2 = $sql->query('SELECT * FROM test_notice(1)'); echo 'Query: '; var_dump($q2); echo 'Notices: '; var_dump($sql->noticeInfo()); ?> ---------------------------------------------------- That will return: ---------------------------------------------------- object(PDO)#1 (0) { } getAttribute: bool(true) Notices: bool(false) Query: object(PDOStatement)#3 (1) { ["queryString"]=> string(28) "SELECT * FROM test_notice(1)" } Notices: array(3) { [0]=> string(23) "NOTICE: Sympatique 1 !" [1]=> string(40) "NOTICE: Sympatique un nouvelle fois 1 !" [2]=> string(33) "NOTICE: Génial maintenant... 1 " } Query: object(PDOStatement)#4 (1) { ["queryString"]=> string(10) "SELECT 1,2" } Notices: bool(false) ---------------------------------------------------- Samuel. Le jeudi 08 octobre 2009 à 23:51 +0200, Samuel ROZE a écrit : > Hi, > > I've make a patch which insert notices concepts to PDO. It create: > - PDO::noticeInfo() - to be like errorInfo > - PDO::ATTR_LOG_NOTICES, the name of the PDO parameter > - PDO::NOTICES_FETCH - fetch notices > - PDO::NOTICES_NONE - don't fetch notices > > The notices HashTable is emptied at each queries. > > There is a patch to implements this function into PDO: > > http://www.d-sites.com/wp-content/uploads/2009/10/php-5_3-pdo-notices-managment.patch > > And one other to implements notices recuperation for PostgreSQL: > > http://www.d-sites.com/wp-content/uploads/2009/10/php-5_3-pdo-pgsql-notices-managment.patch > > It can be done for Oracle, i'm sure. > > Thanks for feedbacks. > Samuel. >

« previous php.internals (#45701) next »