note 85248 added to pdostatement.errorcode

From: Date: Thu, 21 Aug 2008 21:50:34 +0000
Subject: note 85248 added to pdostatement.errorcode
Groups: php.notes 
Request: Send a blank email to php-notes+get-143724@lists.php.net to get a copy of this message
Neither this property nor the PDOStatement::errorInfo() properties are available if you create your own exception handler. I am using PHP 5.2.4, PDO_INFORMIX 1.2.0. Making this call at any point in the program after setting your own exception handler produces an error: PHP Notice: Undefined property: PDOStatement::$errorCode in new_query.php on line or PHP Notice: Undefined property: PDOStatement::$errorInfo in new_query.php on line But if I set the PDO to SILENT, only set error codes with: $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT) Then process with if/else the call to this functions works fine. The examples below only do error checking to show the result codes of this function. Normally you would want more. FAILS: $dbh = new PDO("informix...") $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try { $result = $dbh->query("asdfkjasdfkjasdfjk"); /* obvious sql error */ if ($result) print "success!"; } catch { $myeCode = $dbh->errorCode(); /* do stuff with error */ }; $dbh=0; The error handler gets called but knows nothing about $dbh->errorCode or $dbh->errorInfo. WORKS: $dbh = new PDO("informix...") $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); $result = $dbh->query("asdfkjasdfkjasdfjk"); /* obvious sql error */ if ($result) { /* process result */ print "success!"; /* all done, didn't make any changes */ $dbh->rollback(); } else { $myeCode = $dbh->errorCode(); print_r($myeCode); }; $dbh=0; /* close connection */ I hope this helps someone else. Cheers, David ---- Server IP: 208.69.120.35 Probable Submitter: 67.191.208.219 ---- Manual Page -- http://www.php.net/manual/en/pdostatement.errorcode.php Edit -- https://master.php.net/note/edit/85248 Del: integrated -- https://master.php.net/note/delete/85248/integrated Del: useless -- https://master.php.net/note/delete/85248/useless Del: bad code -- https://master.php.net/note/delete/85248/bad+code Del: spam -- https://master.php.net/note/delete/85248/spam Del: non-english -- https://master.php.net/note/delete/85248/non-english Del: in docs -- https://master.php.net/note/delete/85248/in+docs Del: other reasons-- https://master.php.net/note/delete/85248 Reject -- https://master.php.net/note/reject/85248 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#143724) next »