Bei der Verwendung von PHP für Datenbankvorgänge bietet die MySQLI -Erweiterung sehr bequeme Funktionen zum Verbinden, Abfragen und Betrieb von Datenbanken. MySQLI_Result ist das Ergebnis -Set -Objekt, das bei der Ausführung der Abfrage zurückgegeben wird. In diesem Artikel wird vorgestellt, wie alle von der MySQLI_Result -Funktion zurückgegebenen Ergebnisse korrekt durchlaufen werden, damit die Abfragergebnisse effizient erhalten und verarbeitet werden können.
Zunächst müssen wir über die Funktion mySQLI_Connect () eine Verbindung zur Datenbank herstellen. Angenommen, Sie haben hier, dass Sie bereits eine grundlegende Erfahrung des MySQL -Datenbankbetriebs haben. Folgendes ist ein einfaches Beispiel für Datenbankverbindungen:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Eine Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);
// Überprüfen Sie die Verbindung
if ($conn->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $conn->connect_error);
}
?>
Nachdem wir eine Verbindung zur Datenbank hergestellt haben, können wir SQL -Abfragen über MySQLI_Query () ausführen. Nehmen wir an, wir fragen eine Tabelle mit dem Namen Benutzer ab und erhalten Informationen über alle Benutzer:
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
Zu diesem Zeitpunkt wird $ result ein mySQLI_Result -Objekt sein, das alle Daten der Abfrage enthält.
Der häufigste Weg, um das von MySQLI_Result zurückgegebene Ergebnis -Set zu durchqueren, besteht darin, die Funktion mySQLI_Fetch_assoc () zu verwenden. Die Funktion gibt ein assoziatives Array zurück, und jedes Mal, wenn sie genannt wird, gibt sie eine Datenreihe zurück und verschiebt den Zeiger in die nächste Zeile, bis keine Daten mehr vorhanden sind.
if ($result->num_rows > 0) {
// Ausgabedaten für jede Zeile
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 Ergebnis";
}
In diesem Beispiel gibt MySQLI_Fetch_assoc () ein assoziatives Array zurück, in dem der Schlüssel des Arrays der Feldname ist und der Wert der Wert des entsprechenden Feldes ist.
Zusätzlich zu MySQLI_Fetch_assoc () können Sie auch MySQLI_Fetch_Row () verwenden, um ein Indexarray zurückzugeben, und die Feldwerte jeder Datenreihe werden in der Reihenfolge in der Reihenfolge gespeichert. Bei Verwendung dieser Methode müssen Sie über den Index auf die Werte jedes Feldes zugreifen.
if ($result->num_rows > 0) {
// Ausgabedaten für jede Zeile
while($row = $result->fetch_row()) {
echo "id: " . $row[0] . " - Name: " . $row[1] . " - Email: " . $row[2] . "<br>";
}
} else {
echo "0 Ergebnis";
}
Hier gibt MySQLI_Fetch_row () ein numerisches Indexarray zurück, $ row [0] entspricht dem Feld ID , $ row [1] ist Name und $ row [2] ist eine E -Mail .
Wenn Sie mehr an die Art und Weise gewöhnt sind, wie Objekte zur Verarbeitung von Abfrageergebnissen verwendet werden, können Sie mySQLI_Fetch_object () verwenden. Es gibt ein Objekt zurück, auf jedes Feld kann über die Objekteigenschaften zugegriffen werden.
if ($result->num_rows > 0) {
// Ausgabedaten für jede Zeile
while($row = $result->fetch_object()) {
echo "id: " . $row->id . " - Name: " . $row->name . " - Email: " . $row->email . "<br>";
}
} else {
echo "0 Ergebnis";
}
Wenn Sie während der Verarbeitung Daten auf allen Zeilen flexibler manipulieren müssen, können Sie die Funktion mySQLI_Fetch_all () verwenden, die ein zweidimensionales Array zurückgibt, das alle Ergebnisse enthält.
$allResults = $result->fetch_all(MYSQLI_ASSOC);
foreach ($allResults as $row) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
Hier gibt Fetch_All (mysqli_assoc) alle Ergebnisse als assoziatives Array zurück.
Denken Sie nach Abschluss des Vorgangs daran, die Datenbankverbindung zu schließen:
$conn->close();
Durch die oben genannten Methoden können wir alle Ergebnisse durch die MySQLI_Result -Funktion durchführen. Welche Methode zu verwenden ist, hängt von Ihren individuellen Bedürfnissen und der Verarbeitung der Daten ab. Wenn Sie Felder erhalten möchten, indem Sie Arrays assoziieren, können Sie mySQLI_Fetch_assoc () verwenden. Wenn Sie objektorientiert bevorzugen, können Sie mySQLI_Fetch_object () auswählen; Wenn Sie alle Datenzeilen gleichzeitig verarbeiten müssen, können Sie mySQLI_Fetch_all () verwenden.
Denken Sie daran, nach dem Datenbankverbindungsvorgang die Verbindung rechtzeitig zu schließen, um die Freigabe von Ressourcen sicherzustellen.