|  | Posted by Jerry Stuckle on 02/28/07 18:48 
Tim Streater wrote:> In article <1172668483.913253.134510@h3g2000cwc.googlegroups.com>,
 >  "Mitesh" <oopsbabies@hotmail.com> 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@attglobal.net
 >>> ==================
 >> 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)
 >
 > My understanding was that, if you re-use $res without a call to
 > 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
 > result set. At least that's how it used to be. I don't know if they have
 > improved the internals such that mysql_free_result is now a dummy call,
 > or whether that is inherently impossible because mysql itself holds the
 > result set.
 >
 > Perhaps a guru can enlighten us.
 >
 > -- tim
 
 Tim,
 
 I'm not a guru.  But when you make certain calls to MySQL, it will hold
 certain resources for the result set.  mysql_free_result() is anything
 BUT a dummy call.
 
 Similar calls exist in most SQL databases for the same reason.
 
 --
 ==================
 Remove the "x" from my email address
 Jerry Stuckle
 JDS Computer Training Corp.
 jstucklex@attglobal.net
 ==================
 [Back to original message] |