ID:               21663
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Bogus
 Bug Type:         MySQL related
 Operating System: Unix (FreeBSD)
 PHP Version:      4.2.3
 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

MySQL connections are stored inside an internal stucture and are not
affected by scope. As of PHP 4.2.0 you can force mysql_connect to open
a new connection rather then attempt to re-use an existing one by
specifying TRUE as the 4th parameter to the function.


Previous Comments:
------------------------------------------------------------------------

[2003-01-15 11:47:03] [EMAIL PROTECTED]

Please read my message in its entirety.  I know mysql-connect returns
the same result resource if passed the same parameters.  That is not
the question.  The question is one of variable scope!  Should the call
to mysql_connect from within the function even be able to see that a
resource id exists in another part of the program that is out of scope
for the executing function.  That is the question!  The answer should
be "no", it is the principle of least priveledge here, the function
should not know about the out of scope resource id.

I have been writing php code for some time and this used to work
correctly.  It got broken in one of the more recent releases and
either:

no one is willing to take the time to understand what I am talking
about

 or, 

it was designed this way on purpose and no one knows why.

If this is truly not a bug than php scope rules appear to be, well,
poorly defined and, that is an issue the language will have to deal
with at some point in time.

------------------------------------------------------------------------

[2003-01-15 11:33:12] [EMAIL PROTECTED]

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

See http://www.php.net/manual/en/function.mysql-connect.php

------------------------------------------------------------------------

[2003-01-15 10:15:22] [EMAIL PROTECTED]

There are two databases involved:
database1 is connected to in the main body of the page
database2 is connected to in a function

========================================================
function foo()
{
   mysql_connect(Same Arguements)
   db1_connection = select_db (db1)
   do something
   close db1_connection
}

mysql_connect(Same Arguements)
db2_connection = select_db(db2)

do something with db1

foo()

do something with db1 //**** This will fail
======================================================

The second "do something with db1 will fail with a "not a valid result
resource" error.  I percieve of two possible reasons for this:

1.  mysql_close(db1_connection) is closing all the links

or, most likely

2.  Since mysql_connect is called with the same arguements it returns
the same resource id (I know this) then, when I close db1_connection it
closes  that resource.

So, either way we have a variable scope issue.  According to what I
understand about the scope rules of php the functions should have no
knowledge of my connection to db2 unless I declare it as global in the
function foo.  But, it does anyway.

As an aside, I used to be able to globally include a resource id into a
function, leave it open and return from the function.  Now, it appears
that when the function exits it disposes of the "global" resource in
its clean up proceedures.

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=21663&edit=1

Reply via email to