#24206 [Opn->Bgs]: PEAR::DB does not work properly with multiple databases
| From: | cox@php.net | 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