Heim >Backend-Entwicklung >PHP-Tutorial >Wie behandelt man „mysqli_next_result()'-Fehler in „mysqli_multi_query()' von PHP richtig?
Strenge Standards: mysqli_next_result() Fehler mit mysqli_multi_query
Im bereitgestellten PHP-Code ein Versuch, mysqli_multi_query() zum Ausführen mehrerer Abfragen zu verwenden In einem einzigen Datenbankaufruf werden strenge Standards ausgelöst Fehler:
mysqli_next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method
Um diesen Fehler zu beheben, wird die folgende Lösung angeboten:
do {} while (mysqli_more_results($db) && mysqli_next_result($db));
Diese Änderung stellt sicher, dass mysqli_more_results() vor der Verwendung von mysqli_next_result() überprüft wird. Da außerdem im bereitgestellten Code keine Ergebnismengen zurückgegeben werden, ist die Überprüfung von mysqli_affected_rows() anstelle des bedingten Exits möglicherweise ein besserer Ansatz.
Eine umfassendere Lösung, die Abfragen mit oder ohne Ergebnismengen mithilfe von mysqli_multi_query() verarbeitet, ist vorausgesetzt:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { if ($result = mysqli_store_result($mysqli)) { // Process result set } } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { // Handle error }
Alternativ gibt es eine „neu erfundene“ Version des Snippets unter Verwendung einer While-Schleife vorgestellt:
while ((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, implode(';', $queries)))) { // Process query } if ($mysqli_error = mysqli_error($mysqli)) { // Handle error }
Diese Snippets bieten einen robusten Mechanismus für die Verarbeitung mehrerer Abfragen und Ergebnismengen, wodurch sie für ein breiteres Spektrum von Szenarien geeignet sind.
Das obige ist der detaillierte Inhalt vonWie behandelt man „mysqli_next_result()'-Fehler in „mysqli_multi_query()' von PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!