|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2012-08-14 18:29 UTC] nikic@php.net
[2012-09-11 13:46 UTC] tyrael@php.net
-Assigned To:
+Assigned To: mysql
[2013-03-24 15:38 UTC] nikic@php.net
[2014-01-01 12:36 UTC] felipe@php.net
-Package: PDO related
+Package: PDO MySQL
[2017-10-24 08:07 UTC] kalle@php.net
-Status: Assigned
+Status: Open
-Assigned To: mysql
+Assigned To:
[2020-12-09 15:49 UTC] nikic@php.net
-Status: Open
+Status: Closed
-Assigned To:
+Assigned To: nikic
[2020-12-09 15:49 UTC] nikic@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 20 23:00:01 2025 UTC |
Description: ------------ When the mysqlnd driver is used PDOStatement->nextRowset() does not return bool(false) when there are no more result sets. This causes several test failures, which all have a diff looking similar to this: 008+ 009+ Warning: PDOStatement::fetchAll(): SQLSTATE[HY000]: General error in %s/bug_41997.php on line 11 010+ array(0) { 011+ } This can be traced down to mysql_next_result() returning 0 instead of -1 in http://lxr.php.net/xref/PHP_TRUNK/ext/pdo_mysql/mysql_statement.c#415. The reason is that (when using mysqlnd) mysql_next_result is aliased to mysqlnd_next_result, but both have different APIs: The mysqlnd_ version only returns PASS = 0 or FAIL = 1, whereas the mysql_ version returns -1 if the call worked, but there were no more resultsets. This is documented at http://dev.mysql.com/doc/refman/5.0/en/mysql-next-result.html in the "Return Values" section. The default mysqlnd next_result implementation is here: http://lxr.php.net/xref/PHP_TRUNK/ext/mysqlnd/mysqlnd.c#2100.