The doc for error handling for fetch() seems unclear and I haven’t found an answer anywhere after a lot of searching. A common usage model for fetch as shown in the doc is:
while ( $row = $stmt->fetch() ) {
// do something with $row
}
The PHP doc at http://www.php.net/manual/en/pdostatement.fetch.php says:
In all cases, FALSE is returned on failure.
What does “failure” mean? An error? A failure to fetch more rows? My question is: when fetch() returns FALSE, what is best practice to detect errors? It seems like after the loop I need to distinguish between an error case and the “no more rows” case.
Should I call $stmt->errorCode() and see if it’s ‘00000’ ?
fetch() will return false when there’s no more data to be fetched. There could also be other case where there truly is a failure, e.g. mysql died or the connection was lost while doing the fetch loop. But generally speaking, that sort of “real” failure is fairly rare, and you’ll most often get “false because there’s no more data available”.
If you’re truly paranoid about writing error handling, then by all means, put an sql error code check after the while loop to catch the cases when something really did blow up.