From: giovanni at giacobbi dot net
Operating system: platform independent
PHP version: 4.4.1
PHP Bug Type: MySQL related
Bug description: wrong handling of mysql connections hashing
Description:
------------
The code for reproducing is self-explanatory. Anyway, the problem appears
when handling multiple connections to the same database with the same
login and passwords.
I'm testing a script that handles connections to multiple MySQL databases,
and for testing purposes I need to operate with two separated local
database. However, the connection is only distinguished by the database
name, while you use only host, user, and password for hashing the single
connection.
This results in a collision when opening the second connection, and makes
it impossible to recover the previous one using mysql_connect()'s existing
link functionality, even if the connection itself is still open.
Reproduce code:
---------------
<?php
/* create primary connection */
$r1 = mysql_connect("localhost", "root", "*****", TRUE);
mysql_select_db("dbname1", $r1) or die(mysql_error());
var_dump($r1);
/* create auxiliary connection */
$r2 = mysql_connect("localhost", "root", "*****", TRUE);
mysql_select_db("dbname2", $r2) or die(mysql_error());
var_dump($r2);
/* get rid of auxiliary connection when done */
mysql_close($r2);
/* fetch back the previous connection as default! */
$r3 = mysql_connect("localhost", "root", "******");
var_dump($r3);
exit();
Expected result:
----------------
resource(4) of type (mysql link)
resource(5) of type (mysql link)
resource(4) of type (mysql link)
Actual result:
--------------
resource(4) of type (mysql link)
resource(5) of type (mysql link)
resource(6) of type (mysql link)
--
Edit bug report at http://bugs.php.net/?id=35868&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=35868&r=trysnapshot44
Try a CVS snapshot (PHP 5.1):
http://bugs.php.net/fix.php?id=35868&r=trysnapshot51
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=35868&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=35868&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=35868&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=35868&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=35868&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=35868&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=35868&r=support
Expected behavior: http://bugs.php.net/fix.php?id=35868&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=35868&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=35868&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=35868&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=35868&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=35868&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=35868&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=35868&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=35868&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=35868&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=35868&r=mysqlcfg