#36578 [Bgs->Opn]: $stmt->fetch() on empty resultset does nothing

From: Date: Thu, 02 Mar 2006 16:25:23 +0000
Subject: #36578 [Bgs->Opn]: $stmt->fetch() on empty resultset does nothing
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-93843@lists.php.net to get a copy of this message
ID: 36578 User updated by: terry at bitsoup dot com Reported By: terry at bitsoup dot com -Status: Bogus +Status: Open Bug Type: PDO related Operating System: Windows XP PHP Version: 5.1.2 New Comment: The empty resultset is not the error. Calling fetch() on an empty resultset sets the error code to a warning and/or generates an exception in every database engine I've seen. In Oracle, it's error ORA-1403: no data found. It's SQL_NODATA in ODBC drivers. I believe it's Error 2053 in MySQL. mysql_stmt_fetch() returns MYSQL_NO_DATA, and not 0 for success. In it's current state, fetch() returning null without raising the exception means we'll have to add the test and throw the exception manually on every single query. Previous Comments: ------------------------------------------------------------------------ [2006-03-02 08:42:51] tony2001@php.net Empty resultset is not an error, it's a common situation. No bug here. ------------------------------------------------------------------------ [2006-03-01 20:01:39] terry at bitsoup dot com Sorry, error code should be 02, not 20 ------------------------------------------------------------------------ [2006-03-01 19:59:35] terry at bitsoup dot com Description: ------------ A fetch against a statment that returns an empty resultset doesn't set any PDO error information, nor does it raise an exception. Testing against MySQL 5.0.18 Reproduce code: --------------- Database connection is successful, and mode is set to throw exceptions: try { $sth = $dbh->prepare("SELECT * from any_table where 1=2"); $sth->execute(); $row = $sth->fetch(); echo "ERROR=" . $sth->errorCode(); } catch (PDOException $e) { dbg("DB Error!: " . $e->getMessage()); die(); } Expected result: ---------------- Either ERROR=20 when not using exceptions, or an exception. Actual result: -------------- ERROR=00 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36578&edit=1

« previous php.bugs (#93843) next »