Re: DB_mysql Bugs?
| From: | Chuck Hagenbuch | Date: | Thu, 15 Feb 2001 15:14:59 +0000 |
| Subject: | Re: DB_mysql Bugs? | ||
| Groups: | php.pear | ||
| Request: | Send a blank email to php-pear+get-1355@lists.php.net to get a copy of this message | ||
Quoting Vinai Kopp <kopp@netzarbeiter.de>:
> 1.) This one is close to the preceding one. The way I see it a bug was
> introduced in Revision 1.44 of DB.php.
> The function isError now returns true if NULL is passed as an argument.
> That way it's not possible to do
> if( DB::isError( $var ) ) print $var->getMessage();
> anymore without doing another is_object or something first. Also, it
> would make it impossible to return NULL if no more data can be fetched
> from a query in fetchRow and similar functions. I suggest to change it
> back.
Okay, I'll elaborate a bit more on this. I changed DB::isError() to flag NULL
as an error because some of the db backends were returning NULL at the end of a
result set, and some were returning an error object. If you want to be able to
write a while loop that will terminate on an error or at the end of a result
set, you need a single check that will tell you if either occurred.
If we could make objects evaluate to false, then we could make DB_error objects
evaluate to false and we'd have a simple check. If we had exceptions, we could
throw an exception and just check for null, and we'd have a simple check. But
as it is, you'd need:
$row = $result->fetchRow();
while (($row != null) && !DB::isError($row)) {
// stuff
$row = $result->fetchRow();
}
... if you wanted null at the end of a result set (I agree that this makes the
most sense, yes), and DB::isError didn't consider null an error.
To me, that's an awkward thing to force people to do. Maybe all this could be
solved by a new function: DB::isResult().
while (DB::isResult($row = $result->fetchRow())) {
// stuff
}
if (DB::isError($row)) {
// error
}
You still need a second check to see if you have an error - but without
exceptions, there's no way around that.
-chuck
--
Charles Hagenbuch, <chuck@horde.org>
"My intuitive grasp of math often leads me astray." -Me