ID: 50318 Comment by: yury at nix dot co dot il Reported By: yury at nix dot co dot il Status: Open Bug Type: PDO related Operating System: FreeBSD 7.2-STABLE PHP Version: 5.2.11 New Comment:
I have just checked out the code of mysql_driver.c in 5_3, it seems that the issue handled there, however I do not understand why to mysql_store_result() and then mysql_free_result(), it seems to work with my solution as well... ( checked only on 5.2.11 ) Previous Comments: ------------------------------------------------------------------------ [2009-11-28 12:08:55] yury at nix dot co dot il Description: ------------ When using multiple statments in a single $pdo->execute(), php throws an exception, however the staments bieng executed anyway. ( example: http://pastebin.com/f6aec645c ) I think the mysql server expects the resultset to be advanced even if it's empty, as shown in the c-api example here: http://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.html I think the follwing will resolve the issue ( diff against svn 5_2 ) *** mysql_driver.c Sat Nov 28 13:13:07 2009 --- /home/yury/php-5.2.11/ext/pdo_mysql/mysql_driver.c Fri Nov 27 13:55:46 2009 *************** *** 252,261 **** --- 252,262 ---- my_ulonglong c = mysql_affected_rows(H->server); if (c == (my_ulonglong) -1) { pdo_mysql_error(dbh); return (H->einfo.errcode ? -1 : 0); } else { + while ( 0 == mysql_next_result( H->server ) ); return c; } } } Reproduce code: --------------- http://pastebin.com/f6aec645c Expected result: ---------------- throw exception and not commit -or- commit and not throw exception Actual result: -------------- The follwing exception thrown: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. But the data IS commited to the database. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50318&edit=1