|
Posted by Tim Streater on 02/28/07 14:38
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
Navigation:
[Reply to this message]
|