ID: 30525 Updated by: [EMAIL PROTECTED] Reported By: l dot cameron2 at ugrad dot unimelb dot edu dot au -Status: Open +Status: Bogus Bug Type: MySQL related Operating System: win32 PHP Version: 5.0.x and 4.x New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php When using same connection parameters no new connection will be established by default, instead an exisiting one will be reused. Set the optional newlink parameter to true if you want to establish more than one physical connection. Previous Comments: ------------------------------------------------------------------------ [2005-04-27 13:25:23] kevin at hatry dot com i just want to add a last comment to make clear that this bug is important. this is (i think) a much used type of program : <?php function do_something_in_mysql () { $link3 = mysql_connect('localhost','root','',false); // do some common queries here mysql_close($link3); echo "link3:"; var_dump($link3); } $link1 = mysql_connect('localhost','root','',false); echo "link1:"; var_dump($link1); do_something_in_mysql(); // here $link1 is UNUSABLE !! mysql_close($link1); echo "link1:"; var_dump($link1); ?> fails with : link1:resource(4) of type (mysql link) link3:resource(4) of type (mysql link) Warning: mysql_close(): 4 is not a valid MySQL-Link resource in ... on line 14 link1:resource(4) of type (Unknown) i think that closing a connection in the same environnement that it was open (like in the function here) is good programming so it shouldn't fail like that ! And the problem is *not* that the mysql_close closed all connections as shown by this example : <?php function do_something_in_mysql () { $link3 = mysql_connect('localhost','root','',false); echo "link3:"; var_dump($link3); // do some common queries here mysql_close($link3); } $link1 = mysql_connect('localhost','root','',false); $link2 = mysql_connect('localhost','root','',false); echo "link1:"; var_dump($link1); echo "link2:"; var_dump($link2); do_something_in_mysql(); // here $link1 is still USABLE mysql_close($link1); echo "link1:"; var_dump($link1); echo "link2:"; var_dump($link2); ?> here there is no failure : link1:resource(4) of type (mysql link) link2:resource(4) of type (mysql link) link3:resource(4) of type (mysql link) link1:resource(4) of type (Unknown) link2:resource(4) of type (Unknown) there would be one if we had closed $link2 after $link1 for example. ------------------------------------------------------------------------ [2005-04-27 03:24:29] l dot cameron2 at ugrad dot unimelb dot edu dot au Changing status back to open; The bug still exists in 5.0CVS as of 2005-04-27 (The sample code I gave still fails). Note kevin at hatry dot com's comments that it also exists in 4.x ------------------------------------------------------------------------ [2005-04-26 18:00:49] kevin at hatry dot com this bug also exists with php 4.3.11 on both win32 (mysql client 3.23.49) and linux (mysql client 4.1.9). Reproduce code: <?php $link1 = mysql_connect('localhost','root','',false); mysql_select_db('mysql',$link1); $link2 = mysql_connect('localhost','root','',false); mysql_select_db('mysql',$link2); echo "link1:"; var_dump($link1); echo "link2:"; var_dump($link2); // both links usable with mysql_query for example mysql_close($link2); // LINE 13 : $link2 = -1; echo "link1:"; var_dump($link1); echo "link2:"; var_dump($link2); ?> this outputs : link1:resource(4) of type (mysql link) link2:resource(4) of type (mysql link) link1:resource(4) of type (mysql link) link2:resource(4) of type (mysql link) and both links are usable for mysql_query even after the mysql_close on one of them. Is is a feature or a bug ? (would be ok as a feature i think) If you uncomment line 13 ($link2 = -1;) we have : link1:resource(4) of type (mysql link) link2:resource(4) of type (mysql link) link1:resource(4) of type (Unknown) link2:int(-1) $link1 is no longer a mysql link resource even though we only closed $link2 ! In fact if you comment the mysql_close but keep the line 13 uncommented, the output is : link1:resource(4) of type (mysql link) link2:resource(4) of type (mysql link) link1:resource(4) of type (mysql link) link2:int(-1) and there $link1 is usable. So it seems that affecting a value (-1, NULL or 'unset'ing) to a mysql resource do an implicit mysql_close but if that resource was already closed we have the equivalent of 2 calls to mysql_close and that is the bug. ------------------------------------------------------------------------ [2005-03-15 01:00:23] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2005-03-07 22:31:13] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ..and update the version field if this still happens, otherwise close this report. ------------------------------------------------------------------------ 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/30525 -- Edit this bug report at http://bugs.php.net/?id=30525&edit=1