Heim > Backend-Entwicklung > PHP-Tutorial > Wie behandelt man „mysqli_next_result()'-Fehler in „mysqli_multi_query()' von PHP richtig?

Wie behandelt man „mysqli_next_result()'-Fehler in „mysqli_multi_query()' von PHP richtig?

DDD
Freigeben: 2024-12-07 15:50:13
Original
922 Leute haben es durchsucht

How to Properly Handle `mysqli_next_result()` Errors in PHP's `mysqli_multi_query()`?

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
Nach dem Login kopieren

Um diesen Fehler zu beheben, wird die folgende Lösung angeboten:

do {} while (mysqli_more_results($db) && mysqli_next_result($db));
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage