2121 Stimmen

PHP: MySQL-Ergebnis in Array speichern

Info von Stefan Trost | Letztes Update am 19.06.2023 | Erstellt am 01.11.2012

Möchten wir das Ergebnis einer MySQL-Abfrage in PHP verarbeiten, ist es oft praktisch, die Daten direkt in einem Array abzuspeichern. Wichtige Funktionen in diesem Zusammenhang sind mysqli_fetch_array(), mysqli_fetch_row() und mysqli_fetch_assoc(). In dieser Info möchte ich auf den Unterschied eingehen und diesen erklären.

Numerisch indiziertes Array mit mysqli_fetch_row

Die Funktion mysqli_fetch_row() gibt uns ein numerisch indiziertes Array zurück. Das heißt, dass wir auf die Daten zum Beispiel mit $arr[1] oder $arr[3] zurückgreifen können:

$res = mysqli_query($db, "SELECT name, ort, land FROM tab WHERE id=1");
$arr = mysqli_fetch_row($res);
echo $arr[0];  // name
echo $arr[1];  // ort
echo $arr[2];  // land

Wie das Beispiel zeigt entspricht die Reihenfolge der Elemente im Array der Reihenfolge der Felder in der Abfrage. Wir können also über die Abfrage festlegen, wie unser Array gefüllt sein soll.

Assoziatives Array mit mysqli_fetch_assoc

Die Funktion mysqli_fetch_assoc() liefert uns ein assoziatives Array zurück. Das bedeutet, dass die Felder nicht mit der Index-Zahl angesprochen werden können sondern mit dem Namen des Feldes. Und dieser Feldname entspricht dem Namen unserer Spalte aus unserer MySQL Datenbank:

$res = mysqli_query($db, "SELECT name, ort, land FROM tab WHERE id=1");
$arr = mysqli_fetch_assoc($res);
echo $arr['name'];  // name
echo $arr['ort'];   // ort
echo $arr['land'];  // land

Interessant in diesem Zusammenhang ist auch die Funktion extract(). Diese Funktion kann uns automatisch aus dem Array einzelne Variablen mit dem jeweiligen Namen erzeugen, die uns danach im Code zur Verfügung stehen, wie das folgende Beispiel zeigt:

$res = mysqli_query($db, "SELECT name, ort, land FROM tab WHERE id=1");
$arr = mysqli_fetch_assoc($res);
extract($arr);
echo $name;  // name
echo $ort;   // ort
echo $land;  // land

Auch die Funktion list() kann dazu genutzt werden, um aus dem Array einzelne Variablen zu machen, wie das folgende Beispiel zeigt:

$res = mysqli_query($db, "SELECT name, ort, land FROM tab WHERE id=1");
list($name, $ort, $land) = mysqli_fetch_row($res);
echo $name;  // name
echo $ort;   // ort
echo $land;  // land

Im Gegensatz zu extract() haben wir mit list() allerdings die Möglichkeit, frei zu bestimmen, wie unsere Variablen heißen sollen. Wir können, aber müssen uns nicht an die Namen der Spalten in unserer Tabelle halten.

Der Alleskönner mysqli_fetch_array

Die Funktion mysqli_fetch_array beherrscht es, den Datensatz sowohl als numerisch indiziertes als auch als assoziatives Array zusammen auszugeben. Dies lässt sich durch den Parameter MYSQLI_NUM oder MYSQLI_ASSOC steuern.

Lässt man den Parameter ganz weg oder benutzt MYSQLI_BOTH, kann man mit beiden Arten auf die Daten zurückgreifen:

$arr = mysqli_fetch_array($res);  
//entspricht mysqli_fetch_array($res, MYSQL_BOTH);
echo $arr[0];      // name
echo $arr['ort'];  // ort
echo $arr[2];      // land

Der Aufruf mysqli_fetch_array($res, MYSQLI_NUM) entspricht der Funktion mysqli_fetch_row($res).

Der Aufruf mysqli_fetch_array($res, MYSQLI_ASSOC) entspricht der Funktion mysqli_fetch_assoc($res).

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.