Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich „Strenge Standards: mysqli_next_result()-Fehler' mit mysqli_multi_query()?

Wie behebe ich „Strenge Standards: mysqli_next_result()-Fehler' mit mysqli_multi_query()?

DDD
DDDOriginal
2024-11-29 05:39:171044Durchsuche

How to Fix

Strenge Standards: mysqli_next_result() Fehler mit mysqli_multi_query

Problem:

Verwendung von mysqli_multi_query( ) löst ein „Streng „Standards“-Fehler im Zusammenhang mit mysqli_next_result().

Lösung:

Um dieses Problem zu beheben, verwenden Sie den folgenden Code:

do{} while(mysqli_more_results($db) && mysqli_next_result($db));

Erklärung:

Der Fehler „Strikte Standards“ tritt auf, weil mysqli_more_results() muss aufgerufen werden, um zu prüfen, ob mysqli_next_result() verwendet werden soll. Das bereitgestellte Code-Snippet stellt sicher, dass mysqli_next_result() nur aufgerufen wird, wenn eine andere Ergebnismenge vorhanden ist.

Überlegungen:

  • Im bereitgestellten Beispiel nur INSERT-Abfragen werden ausgeführt, die keine Ergebnismengen zurückgeben. Daher wird die Schleife nicht ausgeführt und der Fehler tritt nicht auf.
  • Wenn Ihre Abfragen SELECT-Anweisungen oder andere Vorgänge enthalten, die Ergebnismengen zurückgeben, verhindert die bereitgestellte Lösung, dass die Fehlermeldung angezeigt wird.
  • Das geänderte Code-Snippet verwendet eine Do-While-Schleife, die nach dem Test erfolgt und keinen bedingten Abbruch oder Beenden innerhalb der Schleife erfordert Schleife.

Verbesserungen:

Für einen robusteren Ansatz sollten Sie den folgenden Codeausschnitt in Betracht ziehen:

if(mysqli_multi_query($db,$querystring)){
    do{
        $cumulative_rows+=mysqli_affected_rows($db);
    } while(mysqli_more_results($db) && mysqli_next_result($db));
}
if($error_mess=mysqli_error($db)){echo "Error: $error_mess";}
echo "Cumulative Affected Rows: $cumulative_rows";

Dieser Codeausschnitt:

  • Zählt die betroffenen Zeilen von INSERT, UPDATE oder DELETE Abfragen.
  • Zeigt die kumulierten betroffenen Zeilen an.
  • Prüft auf Fehler und stellt eine informative Fehlermeldung bereit.

Zusätzliche Hinweise:

Für Benutzer, die mit mysqli_multi_query() nicht vertraut sind, gibt es hier einen vielseitigen Codeausschnitt, der Abfragen verarbeitet mit oder ohne Ergebnismengen:

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)))){
    echo "<br><br>",key($queries),": ",current($queries);  // display array pointer key:value
    if($result=mysqli_store_result($mysqli)){
        while($rows=mysqli_fetch_assoc($result)){
            echo "<br>Col = {$rows["Col"]}";
        }
        mysqli_free_result($result);
    }
    echo "<br>Rows = ",mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs
}

Dieser Codeausschnitt:

  • Funktioniert für alle Arten von Abfragen, einschließlich SELECT, INSERT, UPDATE und DELETE.
  • Bietet eine detaillierte Ausgabe, einschließlich der Abfrage selbst, betroffener Zeilen- oder Spaltenwerte und potenzieller Fehler.
  • Kann problemlos durchgeführt werden modifiziert für spezifische Bedürfnisse oder Datenbankstrukturen.

Das obige ist der detaillierte Inhalt vonWie behebe ich „Strenge Standards: mysqli_next_result()-Fehler' mit mysqli_multi_query()?. 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