Re: re-using variables



Mitesh wrote:
Jerry Stuckle wrote:
Michael Fesser wrote:
.oO(Jerry Stuckle)

Toby A Inkster wrote:

You have:

$res = mysql_query("SELECT * FROM table1");
...
$res = mysql_query("SELECT * FROM table2");
if(!$res)
return;

$res is still going to be set as a result of your first query.

Use unset($res) between each query.
No, Toby.

$res will have the results of the second query. The resource returned
by the second query (or false) will overwrite what was in $res.
Try that with PDO and it will crash most likely. Overwriting $res will
not necessarily free the previous result set, which might then lead to
MySQL complaining about an unbuffered query or something like that.

| You cannot use the same variable for a PDOStatement object twice. As
| others have pointed out it works when you set this variable to null in
| between.

http://bugs.php.net/bug.php?id=35793

Micha
We're not talking PDO , Micha.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@xxxxxxxxxxxxx
==================

Ok if we need to call, mysql_free_result for mysql resources doesn't
that mean every other type of resources bound this way to a variable
must have a freeing function that has to be called before the variable
can be re-used? So doesn't it coincide with what I am saying that
variables bound to resources when re-used may cause problems. (and
according to the others post the variables can be re-used if the
previously allocated resource is freed)


THE VARIABLE IS NOT THE RESOURCE! The variable can be reused. But there are MySQL resources allocated. mysql_free_result() frees up these resources. If you don't call it, the resources won't be freed up until the garbage collector runs. This will be sometime after the last reference to the resource is destroyed/reused or whatever.

Now this is not likely to cause a problem in most systems. However, in some circumstances (i.e. the resource caused rows or tables to be locked in MySQL), other requests could be delayed until the garbage collector runs. And in extremely busy systems, this could occasionally cause other requests to time out because the locks are held too long.

But these are problems you wouldn't generally notice in most websites. Nonetheless, it's always better to clean up after yourself and free the resources as soon as you're done with them. Not only is it good programming practice, it decreases the load on the server (because resources are not being held longer than necessary).



--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@xxxxxxxxxxxxx
==================
.



Relevant Pages

  • Re: re-using variables
    ... $res is still going to be set as a result of your first query. ... Use unsetbetween each query. ... variables bound to resources when re-used may cause problems. ... if you re-use $res without a call to ...
    (comp.lang.php)
  • Re: re-using variables
    ... $res is still going to be set as a result of your first query. ... Use unsetbetween each query. ... Ok if we need to call, mysql_free_result for mysql resources doesn't ... if you re-use $res without a call to ...
    (comp.lang.php)
  • Re: Access query to return items free between two user input dates
    ... I realized AFTER I posted that the solution I proposed will only find resources if they have been used at least once. ... Or build an unmatched query using your table and a saved query that is the where clause above. ... John Spencer wrote: ... It is excluding the one entry where phone 2 is booked on that day, although it brings back all other entries for phone 2, and its also bringing back phone 1/3/4 future bookings, which is correct. ...
    (microsoft.public.access.queries)
  • Re: re-using variables
    ... $res is still going to be set as a result of your first query. ... Use unsetbetween each query. ... variables bound to resources when re-used may cause problems. ... mysql_free_result, it re-uses what $res is, which is a pointer to a result set, but doing that does *not* free up the space used by the ...
    (comp.lang.php)
  • Re: Build a form from SQL
    ... build forms off of SQL, rather than doing an Autoform from a query. ... anyone recommend an online resources for how to do this? ... A free tutorial written by Crystal (MS Access MVP): ...
    (microsoft.public.access.formscoding)