Aktueller Standort: Startseite> Neueste Artikel> So erhalten Sie das Ergebnissatz mit Use_Result () vor Next_Result ()

So erhalten Sie das Ergebnissatz mit Use_Result () vor Next_Result ()

gitbox 2025-04-29

Bei der Verwendung von PHP zum Betrieb von MySQL-Multi-Statement-Abfragen wird Multi_query () häufig verwendet, um mehrere Ergebnissätze mit Next_Result () zu durchqueren. Vor dem Aufrufen von Next_Result () ist die korrekte Verwendung von Use_Result () ein wichtiger Schritt, um sicherzustellen, dass das Ergebnis nicht übersehen oder fehlerbehandelt wird. In diesem Artikel wird seine korrekte Nutzung vorgestellt und ein vollständiges Codebeispiel angegeben.

Warum Use_Result () benötigt wird

Nachdem MySQL eine Multi-Statement-Abfrage ausführt, gibt MySQL mehrere Ergebnissätze zurück. PHP bietet zwei Möglichkeiten, um das Ergebnissatz zu erhalten: store_result () und use_result () . Unter ihnen ist Use_Result () eine nicht gepufferte Methode und zum Lesen der Ergebnisse großer Datenvolumina geeignet, die sofort mit dem Lesen von Daten vom Server beginnen.

Wenn Sie Next_Result () vor der Verarbeitung des aktuellen Ergebnissatzes aufrufen, wird das aktuelle Ergebnissatz von MySQL verworfen. Dies führt dazu, dass Sie nicht auf diese Ergebnisse zugreifen können, und können auch einen Fehler machen. Daher muss Use_Result () zuerst aufgerufen werden, um das aktuelle Ergebnissatz zu erhalten und dann zu lesen.

Richtige Verwendung

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users; SELECT * FROM products;";
if ($mysqli->multi_query($sql)) {
    do {
        // Berufung next_result() Der aktuelle Ergebnissatz muss vorher erhalten werden
        if ($result = $mysqli->use_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free(); // Denken Sie daran, die Ergebnisressource zu veröffentlichen
        } else {
            echo "Derzeit gibt es keine Ergebnismenge oder Fehler:" . $mysqli->error;
        }
    } while ($mysqli->next_result());
} else {
    echo "Abfrage fehlgeschlagen:" . $mysqli->error;
}

$mysqli->close();
?>

Dinge zu beachten

  1. CALL USSURT_RESULT () Nur einmal : Use_Result () kann nur einmal pro Ergebnissatz verwendet werden, da ansonsten ein Fehler gemeldet wird.

  2. Ressourcen freigeben : Nennen Sie nach der Verarbeitung der Ergebnisse $ $ result-> Free (), um den Speicher freizugeben.

  3. Fehlerprüfung : Use_Result () kann Falsch zurückgeben und sollte beurteilt werden.

Abschluss

Wenn Sie die richtige Reihenfolge von Use_Result () und Next_Result () beherrschen, können Sie nicht nur bei der Behandlung von Abfragen mit mehreren Statements gemeinsame logische Fehler vermeiden, sondern auch die Robustheit Ihres Programms verbessern. Wenn Sie mehrere SQL -Abfragen in Ihrem Projekt aufrufen müssen und das Ergebnissatz groß ist, wird empfohlen , Use_Result () Vorrang zu geben und sich streng an den obigen Prozess einzuhalten.

Weitere praktische Fähigkeiten finden Sie auf unserer Website: https://gitbox.net/php-tips