|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2014-06-20 13:06 UTC] johannes@php.net
-Status: Open
+Status: Assigned
-Assigned To:
+Assigned To: mysql
[2014-06-20 13:06 UTC] johannes@php.net
[2017-10-24 08:11 UTC] kalle@php.net
-Status: Assigned
+Status: Open
-Assigned To: mysql
+Assigned To:
[2023-01-10 15:43 UTC] dharman@php.net
-Status: Open
+Status: Wont fix
[2023-01-10 15:43 UTC] dharman@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 04:00:01 2025 UTC |
Description: ------------ It's not possible to get the results of an async query in an user-extended mysqli_result. For synchronous queries you could do: class DatabaseResult extends mysqli_result {} $r = mysqli_real_query($link, $query); $o = new DatabaseResult($link, MYSQLI_STORE_RESULT); For async the API is limited to mysqli_query() and mysqli_reap_async_query(). mysqli_reap_async_query() not only calls mysqlnd_reap_async_query(), but also mysql_store_result()/mysql_use_result(). Therefore the mysqli_result constructor is not usable. Possible solutions: 1) Optional argument to mysqli_reap_async_query() to only call mysqlnd_reap_async_query() but not mysql_store_result()/mysql_use_result() - not elegant but small fix 2) mysqli_query() should save async case; mysql_store_result() & mysql_use_result() should call mysqlnd_reap_async_query() automatically; remove mysqli_reap_async_query() Workaround now (overhead of SELECT 1 query): $r = $link->multi_query('SELECT 1;'.$query); $link->use_result()->free(); // do sth. else (async) $link->next_result(); $o = new DatabaseResult($link, MYSQLI_STORE_RESULT);