You are here: Re: re-using variables « PHP Programming Language « IT news, forums, messages
Re: re-using variables

Posted by Tim Streater on 02/28/07 22:25

In article <-ZOdnZ5JY_tAU3jYnZ2dnUVZWhednZ2d@comcast.com>,
Jerry Stuckle <jstucklex@attglobal.net> wrote:

> 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.

Jerry,

Thanks. I'll stick to my good programming practice then, which is to
always free it even as the script exits.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация