Re: [PHP] Re: Broken IF behavior? (Changing the branch changes the evaluation)

2009-07-29 Thread Shawn McKenzie
Ford, Mike wrote:
>> -Original Message-
>> From: Matt Neimeyer [mailto:m...@neimeyer.org]
>> Sent: 29 July 2009 16:47
>>
 $Ret = mysql_fetch_array($result); if(!$Ret) { } else { return
>> $Ret; }
>>> I'm assuming that you are calling my_fetch_array() in a loop of
>> some
>>> sort and so at some point there are no more records in the result.
>> Oh... Um... Yeah... Well... 
>>
>> So... Checking the docs... "Returns an array of strings that
>> corresponds to the fetched row, or FALSE if there are no more rows."
>>
>> Is there a way to differentiate between a FALSE for no more rows and
>> an error?
> 
> I don't actually think that mysql_fetch_array can return an error -- read 
> that description again, it's very clear that you get an array of fetched 
> values or FALSE for no more data, no other options. If there's any error 
> occurring, it will be in the preceding mysql_query().
> 

Probably the only error you can get is: supplied argument is not a valid
MySQL result resource, if $result is not valid.  So you could check that
in the code that does the actual query.

As for the function, I would just do this:

function my_fetch_array($result)
{
if(version_compare($GLOBALS['Version'], "2.0", ">=")) {
return mysql_fetch_array($result);
} else {
return odbtp_fetch_array($result);
}
}

-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] Re: Broken IF behavior? (Changing the branch changes the evaluation)

2009-07-29 Thread Ford, Mike
> -Original Message-
> From: Matt Neimeyer [mailto:m...@neimeyer.org]
> Sent: 29 July 2009 16:47
> 
> >> $Ret = mysql_fetch_array($result); if(!$Ret) { } else { return
> $Ret; }
> > I'm assuming that you are calling my_fetch_array() in a loop of
> some
> > sort and so at some point there are no more records in the result.
> 
> Oh... Um... Yeah... Well... 
> 
> So... Checking the docs... "Returns an array of strings that
> corresponds to the fetched row, or FALSE if there are no more rows."
> 
> Is there a way to differentiate between a FALSE for no more rows and
> an error?

I don't actually think that mysql_fetch_array can return an error -- read that 
description again, it's very clear that you get an array of fetched values or 
FALSE for no more data, no other options. If there's any error occurring, it 
will be in the preceding mysql_query().


Cheers!

Mike
 -- 
Mike Ford,
Electronic Information Developer, Libraries and Learning Innovation,  
Leeds Metropolitan University, C507, Civic Quarter Campus, 
Woodhouse Lane, LEEDS,  LS1 3HE,  United Kingdom 
Email: m.f...@leedsmet.ac.uk 
Tel: +44 113 812 4730




To view the terms under which this email is distributed, please go to 
http://disclaimer.leedsmet.ac.uk/email.htm

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: Broken IF behavior? (Changing the branch changes the evaluation)

2009-07-29 Thread Matt Neimeyer
>> $Ret = mysql_fetch_array($result); if(!$Ret) { } else { return $Ret; }
> I'm assuming that you are calling my_fetch_array() in a loop of some
> sort and so at some point there are no more records in the result.

Oh... Um... Yeah... Well... 

So... Checking the docs... "Returns an array of strings that
corresponds to the fetched row, or FALSE if there are no more rows."

Is there a way to differentiate between a FALSE for no more rows and an error?

Matt

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: Broken IF behavior? (Changing the branch changes the evaluation)

2009-07-28 Thread Shawn McKenzie
Matt Neimeyer wrote:
> Background: I'm converting a webapp from Visual FoxPro as a backend to
> MySQL... However one part of our app (a system status checker) is
> common code between the versions.
> 
> I've got the following function... In English (in case it's not
> apparent), if the version of the app is 2.0 or higher, then use MySQL
> functions, otherwise use the ODBTP function to connect to VFP.
> 
> function my_fetch_array($result)
>   {
>   global $Version;
>   if(version_compare($Version,"2.0",">="))
>   { $Ret = mysql_fetch_array($result); if(!$Ret) { } else { 
> return $Ret; } }
>   else{ $Ret = odbtp_fetch_array($result); if(!$Ret) { } else { 
> return $Ret; } }
>   }
> 
> This feels like a hack but works perfectly. Data is returned and all
> is right with the world. Until I added in extra "error reporting".
> When I change the if(!$Ret) portion as such...
> 
>   if(!$Ret) { die("myError".mysql_error()); } else { return $Ret; }
> 
> It ALWAYS dies... and I see "myError" on the screen... If I change it
> like such...
> 
>   if(!$Ret) { } else { echo "notError"; return $Ret; }
> 
> I always see the "notError" on the screen and $Ret gets returned.
> 
> WHY does adding the die() inside the { } change the way the if is evaluated?
> 
> By the way I've tested this on 4.4.x on OSX and Windows, and on 5.2.5
> on Windows...
> 
> Thanks
> 
> Matt

I'm assuming that you are calling my_fetch_array() in a loop of some
sort and so at some point there are no more records in the result.


-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php