RE: [PHP-DB] More help with mysql -- solved (bizarre)
| From: | Ford, Mike [LSS] | Date: | Tue, 18 Feb 2003 12:48:32 +0000 |
| Subject: | RE: [PHP-DB] More help with mysql -- solved (bizarre) | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-25735@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: evan@exclusivebooks.com [mailto:evan@exclusivebooks.com]
> Sent: 18 February 2003 08:26
>
> If I remove the '|| die' part from the mysql_query()
> statement, it works
> fine. This is bizarre, but there it is.
>
> ie, if I have:
>
> $result = mysql_query("SELECT * FROM SOME_TABLE");
>
> it works.
>
> If I have:
>
> $result = mysql_query("SELECT * FROM SOME_TABLE") || die
> ("Unable to execute
> SQL query");
>
> it doesn't work. It gives me: " Supplied argument is not a valid MySQL
> result resource"
The || and OR operators, although both doing a Boolean or, have different priorities, so:
$result = mysql_query(...) or die(...);
is the same as
($result = mysql_query(...)) or die(...);
whilst
$result = mysql_query(...) || die(...);
is the same as
$result = (mysql_query(...) || die(...));
In the first case, the result of mysql_query() is assigned into $result, and if it returns FALSE the
die() is performed. In the second case, the result of applying the || operator to the mysql_query()
and the die() is assigned to $result; because PHP uses short-circuit evaluation, the die() is still
only executed if mysql_query returns FALSE, but the || operator still returns a simple Boolean to be
assigned to $result -- which, if the die() hasn't fired, must be TRUE (which PHP generally
prints as 1). QED.
Cheers!
Mike
---------------------------------------------------------------------
Mike Ford, Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS, LS6 3QS, United Kingdom
Email: m.ford@lmu.ac.uk
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211