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
DDDOriginal
2024-12-07 15:50:13859Durchsuche

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

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!

Stellungnahme:
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