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

Reply via email to