W3docs

fetch_array

In diesem Artikel erläutern wir die Funktion mysqli_fetch_array() in PHP, die eine Zeile aus einem MySQLi-Ergebnissatz als assoziativen oder numerischen Array abruft.

In diesem Artikel befassen wir uns mit der Funktion mysqli_fetch_array() in PHP, die dazu verwendet wird, eine Zeile aus einem MySQLi-Ergebnissatz als assoziativen, numerischen oder kombinierten array abzurufen. Wir geben einen Überblick über die Funktion, ihre Parameter und praktische Beispiele.

Einführung in die Funktion mysqli_fetch_array()

Die Funktion mysqli_fetch_array() ist eine integrierte PHP-Funktion, die eine Zeile aus einem MySQLi-Ergebnissatz abruft. Sie gibt die Zeile als assoziativen array, als numerischen array oder als beides zurück – abhängig vom Parameter result_type. Dies ist besonders nützlich, wenn Sie über Abfrageergebnisse iterieren und auf Spalten nach Name oder Index zugreifen müssen.

Sie arbeitet mit dem Ergebnis, das von mysqli_query() zurückgegeben wird. Jeder Aufruf bewegt einen internen Zeiger zur nächsten Zeile und gibt diese zurück; wenn keine Zeilen mehr vorhanden sind, gibt sie null zurück (den Wert, der die Schleife beendet). Sie ist die flexibelste der MySQLi-Fetch-Funktionen: mysqli_fetch_assoc() gibt immer Namensschlüssel zurück, mysqli_fetch_row() gibt immer Indexschlüssel zurück, und mysqli_fetch_array() lässt Sie beides wählen.

Verwendung der Funktion mysqli_fetch_array()

Die Verwendung von mysqli_fetch_array() erfordert einen gültigen MySQLi-Ergebnissatz. Sie wird typischerweise innerhalb einer while-Schleife verwendet, um alle Zeilen zu durchlaufen. Hier ist ein vollständiges Beispiel mit grundlegender Fehlerbehandlung:

Grundlegende Verwendung mit einer while-Schleife

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
    die("Query failed: " . mysqli_error($mysqli));
}

// Fetch rows as an associative array
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}

mysqli_close($mysqli);
?>

In diesem Beispiel stellen wir eine Verbindung her und führen eine Abfrage aus. Wir prüfen auf Verbindungs- und Abfragefehler, um stille Fehlschläge zu verhindern. Die while-Schleife ruft mysqli_fetch_array() wiederholt auf und gibt false zurück, wenn keine weiteren Zeilen mehr vorhanden sind. Die Konstante MYSQLI_ASSOC stellt sicher, dass auf Spalten über ihren Namen zugegriffen wird.

Fetch-Modi und erweiterte Verwendung

Der zweite Parameter von mysqli_fetch_array() steuert, wie die Zeile zurückgegeben wird. Es gibt drei Konstanten, die Sie verwenden können:

  • MYSQLI_ASSOC – Gibt einen assoziativen array zurück (Spaltennamen als Schlüssel).
  • MYSQLI_NUM – Gibt einen numerischen array zurück (Spaltenindizes als Schlüssel).
  • MYSQLI_BOTH – Gibt sowohl assoziative als auch numerische arrays zurück. Dies ist der Standardmodus, wenn der zweite Parameter weggelassen wird.

Hier ist, wie man eine Zeile als numerischen array abruft:

Numerischer array-Abruf

<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
    echo $row[0] . " - " . $row[1] . "<br>";
}
?>

Bei der Verwendung von MYSQLI_BOTH erscheint jede Spalte zweimal im array: einmal nach Name und einmal nach Index. Dies kann für Legacy-Code nützlich sein, erhöht jedoch den Speicherbedarf. Daher wird MYSQLI_ASSOC oder MYSQLI_NUM für moderne Anwendungen generell bevorzugt. Wenn Sie nur eine Form benötigen, verwenden Sie die dedizierten Helfer mysqli_fetch_assoc() oder mysqli_fetch_row(), die das Erstellen der zusätzlichen Schlüssel überspringen.

Objektorientierter Stil

mysqli_fetch_array() hat auch eine objektorientierte Form. Wenn Sie das Ergebnis von $mysqli->query() erhalten haben, rufen Sie die Methode am Ergebnisobjekt auf, anstatt das Ergebnis an die prozedurale Funktion zu übergeben:

OOP-Äquivalent

<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>

Beide Stile rufen dasselbe zugrunde liegende Verhalten auf; wählen Sie denjenigen, der zum Rest Ihrer Codebasis passt. Um jede Zeile einem object mit benannten Eigenschaften statt einem array zuzuordnen, verwenden Sie mysqli_fetch_object(), und um alle Zeilen gleichzeitig in ein zweidimensionales array zu laden, siehe mysqli_fetch_all().

Fazit

Die Funktion mysqli_fetch_array() bietet einen flexiblen Zeilenabruf aus MySQLi-Ergebnissätzen. Wenn Sie die Fetch-Modi verstehen und eine grundlegende Fehlerbehandlung einbinden, können Sie robustere und effizientere Datenbankabfragen in PHP schreiben.

Übung

Übung
Was macht die Funktion mysqli_fetch_array() in PHP?
Was macht die Funktion mysqli_fetch_array() in PHP?
Was this page helpful?