Strenge Standards: Beheben des mysqli_next_result()-Fehlers mit mysqli_multi_query
Die Sicherstellung der ordnungsgemäßen Nutzung von mysqli_multi_query ist entscheidend, um die Meldung „Strenge Standards“ zu vermeiden. Das Eliminieren von Semikolons hat zwar möglicherweise ein Problem beseitigt, das Kernproblem wurde dadurch jedoch nicht gelöst.
Um die Fehlermeldung zu beheben, berücksichtigen Sie die folgenden Vorschläge:
Grundlegendes zu mysqli_next_result()
mysqli_next_result() verschiebt den Ergebniszeiger auf die nächste von generierte Ergebnismenge mysqli_multi_query(). Für die Ausführung ist jedoch ein anfänglicher Ergebnissatz erforderlich, der nicht in allen Fällen garantiert ist.
Lösung
Integrieren Sie die folgenden Prüfungen in die „do“-Schleife:
do { if ($result = mysqli_store_result($db)) { // Ergebnismenge verarbeiten } } while (mysqli_more_results($db) && mysqli_next_result($db));
Alternative Syntax: WHILE{} Schleife
Während das klassische „IF(){DO{} WHILE}“-Syntax ist gültig, eine vereinfachte und besser lesbare Alternative ist:
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))))
Dieser Ansatz definiert klar die Bedingungen für die Ausführung der Schleife und die Prüfung auf Ergebnismengen.
Umfassende Snippets
Berücksichtigen Sie für eine umfassende Lösung die folgenden Snippets für die Bearbeitung von Abfragen mit oder ohne Ergebnis Sätze:
Klassische „IF(){DO{} WHILE}“-Syntax:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { echo "<br><br>", key($queries), ": ", current($queries); // display key:value @ pointer if ($result = mysqli_store_result($mysqli)) { // if a result set 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 } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
Neu erfundenes Rad „WHILE{}“-Syntax:
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 } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
Diese Snippets verarbeiten Abfragen effektiv mit oder ohne Ergebnismengen und bieten eine detaillierte Fehlerbehandlung für Debugging-Zwecke.
Das obige ist der detaillierte Inhalt vonWie behebe ich den „Strenge Standards: Behebung des mysqli_next_result()-Fehlers' mit mysqli_multi_query?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!