Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 1.12.2

Bug #6668 Error handling of Pear::DB (DB_Error)
Submitted: 2006-02-02 13:54 UTC
From: peter dot buki at vodafone dot hu Assigned: danielc
Status: Bogus Package: DB (version 1.7.6)
PHP Version: 5.0.5 OS: SunOS 5.10 Generic sun4u
Roadmaps: (Not assigned)    
Subscription  


 [2006-02-02 13:54 UTC] peter dot buki at vodafone dot hu
Description: ------------ I get the following error message when trying to use DB_Common::getAssoc or getAll Fatal error: Call to undefined method DB_Error::getAssoc() in /home/peter.buki/public_html/warrant/dbtest.php on line 15 Fatal error: Call to undefined method DB_Error::getAll() in /home/peter.buki/public_html/warrant/dbtest.php on line 14 Test script: --------------- <?PHP require_once 'DB.php'; $dsn = "mysql://bukipeti:bukipeti@localhost/bukipeti" ; $options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ALL, ); $db =& DB::connect($dsn, $options); $query="select USERNAME, PASSWORD from USER" ; $result =& $db->getAll($query, false, array(), DB_FETCHMODE_OBJECT); $result =& $db->getAssoc($query, false, array(), DB_FETCHMODE_OBJECT); $db->disconnect ; ?> Expected result: ---------------- Getting the array containing the results instead of this error message. Actual result: -------------- Fatal error: Call to undefined method DB_Error::getAssoc() in /home/peter.buki/public_html/warrant/dbtest.php on line 15 _or_ Fatal error: Call to undefined method DB_Error::getAll() in /home/peter.buki/public_html/warrant/dbtest.php on line 14

Comments

 [2006-02-02 14:39 UTC] peter dot buki at vodafone dot hu
Please do not use the original example script. Please fetch this one (using wget for example): http://www.freeweb.hu/bukipeti/dbtest.txt (sorry for sharing it as text/html, it works only this way)
 [2006-02-02 16:36 UTC] danielc
"Call to undefined method DB_Error::getAssoc()" clearly says getAssoc() is being called from a DB_Error object. Guess what a DB_Error object indicates? That's right, you have an error in your script.
 [2006-02-03 09:49 UTC] peter dot buki at vodafone dot hu
Actually I have found the bug in my script. :-) The dsn variable was empty. (defined $this->dsn and used $dsn) But the problem of Pear::DB is that the error handling could have tell me that this is the problem. So this (last:) example script: <?PHP require_once 'DB.php'; $db = DB::Connect($nonexistingvariable, array()) ; //No dsn specified if (PEAR::isError($db)) { die($db->getMessage()); } ?> Will produce the following output: DB Error: not found I would expect something like "Error connecting" / "Invalid DSN". Letting me know the alternate (more efficient) way of debugging the script would be highly appreciated :-)