#24206 [Opn->Bgs]: PEAR::DB does not work properly with multiple databases

From: Date: Sat, 21 Jun 2003 18:13:55 +0000
Subject: #24206 [Opn->Bgs]: PEAR::DB does not work properly with multiple databases
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-17611@lists.php.net to get a copy of this message
ID: 24206 Updated by: cox@php.net Reported By: fretnoiz at yandex dot ru -Status: Open +Status: Bogus Bug Type: PEAR related Operating System: Windows 2000 PHP Version: 4.3.2 New Comment: I was not able to reproduce the problem with this code: <? require_once "DB.php"; define('DB_DSN1', 'mysql://...'); define('DB_DSN2', 'ibase://...'); $siteDB =& DB::connect(DB_DSN1); $cisDB =& DB::connect(DB_DSN2); $result1 =& $siteDB->query("SELECT N FROM pearquote"); if ($row = $result1->fetchRow(DB_FETCHMODE_ASSOC)) { $code = $row['N']; echo $code . "\n"; $result2 =& $cisDB->query("SELECT N FROM pearquote WHERE N='$code'"); if (DB::isError($result2)) { die($result2->toString()); } $row2 = $result2->fetchRow(DB_FETCHMODE_ASSOC); echo $row2['N'] . "\n"; } ?> Output: 12.3 12.3000001907 Notes: DSN1 is a mysql valid dsn and DSN2 a valid interbase dsn. Results differ because the column is defined as FLOAT and interbase seems to "strangely" output it. I guess the problem is in the use of an old version of the ibase pear db driver/php or a problem with your code. Please download the lastest version from CVS and try again, with this exact test code. FYI a new Pear DB release will be announced in few days. Thanks, Tomas V.V.Cox Previous Comments: ------------------------------------------------------------------------ [2003-06-17 10:14:18] fretnoiz at yandex dot ru Yes, I also noticed that mysql databases work fine. Maybe the problem is in the interbase driver? ------------------------------------------------------------------------ [2003-06-17 09:40:40] arnaud@php.net works fine with two mysql databases. I don't know what's wrong ------------------------------------------------------------------------ [2003-06-17 09:11:58] fretnoiz at yandex dot ru If I do a PEAR::setErrorHandling(PEAR_ERROR_DIE); output is following --- 006.905 Warning: ibase_fetch_row(): supplied argument is not a valid InterBase result resource in c:\Web\htdocs\pear\DB\ibase.php on line 214 --- and testing $result2 for error gives nothing I've also noticed that if I remove WHERE clause i.e. $result2 =& $cisDB->query("SELECT NAME FROM kod"); the script works fine and I successfully get the first row from interbase table: 006.905 Array ( [0] => 006.905 ) But when I change connection order the error returns: $cisDB =& DB::connect(DB_DSN2); $siteDB =& DB::connect(DB_DSN1); $result1 =& $siteDB->query("SELECT NAME FROM kod"); if ($row = $result1->fetchRow(DB_FETCHMODE_ASSOC)) { $code = $row['NAME']; echo $code . "<br>\n"; $result2 =& $cisDB->query("SELECT NAME FROM kod WHERE NAME='$code'"); if (DB::isError($result2)) { die($result2->getErrorMessage() . ' ' . $result2->getUserinfo()); } print_r($result2->fetchRow()); echo "<br>\n"; } After that if I remove check "if (DB::isError($result2)) {" I get correct result again. =)) It seems that two database objects are not isolated from each other... ------------------------------------------------------------------------ [2003-06-17 06:32:00] arnaud@php.net BTW, not sure about that but try removing the reference PEAR::setErrorHandling(PEAR_ERROR_DIE); $result2 = $cisDB->query("SELECT NAME FROM kod WHERE NAME='$code'"); print_r($result2->fetchRow()); echo "<br>\n"; } ------------------------------------------------------------------------ [2003-06-17 06:28:58] arnaud@php.net So, if you do a PEAR::setErrorHandling(PEAR_ERROR_DIE); What does it give ? alternatively you can try the following $result2 =& $cisDB->query("SELECT NAME FROM kod WHERE NAME='$code'"); if (DB::isError($result2)) { die($result2->getErrorMessage() . ' ' . $result2->getUserinfo()); } ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/24206 -- Edit this bug report at http://bugs.php.net/?id=24206&edit=1

« previous php.pear.dev (#17611) next »