From: norbert at linuxnetworks dot de Operating system: Linux Debian Testing PHP version: 5.2.3 PHP Bug Type: PDO related Bug description: pdo_mysql fetch() throws exception on INSERT statements
Description: ------------ If using the MySQL PDO driver in PDO::ERRMODE_EXCEPTION mode, calling fetch() after executing an INSERT/UPDATE/DELETE statement throws an exception. Instead, it should return FALSE in this case like for an empty result set. Please compare to the SQLite PDO driver which works correctly. Reproduce code: --------------- <?php $db = new PDO( $dsn, $username, $password ); $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); try { $db->exec("CREATE TABLE IF NOT EXISTS TestTable (id INT)"); $sql = 'INSERT INTO TestTable VALUES ( NULL )'; $query = $db->prepare( $sql ); $query->execute(); while( ( $row = $query->fetch( PDO::FETCH_ASSOC ) ) !== FALSE ) {} $query->closeCursor(); } catch( PDOException $pe ) { echo 'Got PDOException: ' . $pe->getMessage(); } ?> Expected result: ---------------- $query->fetch() should return FALSE, as it is not an error to call fetch() for an INSERT statement, because it might be unknown what type of statement will be executed (like in an SQL shell where users can enter their custom queries). Actual result: -------------- PDOException -- Edit bug report at http://bugs.php.net/?id=42322&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=42322&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=42322&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=42322&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=42322&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=42322&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=42322&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=42322&r=needscript Try newer version: http://bugs.php.net/fix.php?id=42322&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=42322&r=support Expected behavior: http://bugs.php.net/fix.php?id=42322&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=42322&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=42322&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=42322&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=42322&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=42322&r=dst IIS Stability: http://bugs.php.net/fix.php?id=42322&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=42322&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=42322&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=42322&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=42322&r=mysqlcfg