|
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
==================
Navigation:
[Reply to this message]
|