(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_assoc -- mysqli_fetch_assoc — Ruft die nächste Zeile einer Ergebnismenge als assoziatives Array ab
Objektorientierter Stil
Prozeduraler Stil
Ruft eine Zeile der Daten aus der Ergebnismenge ab und gibt sie als
assoziatives Array zurück. Bei jedem weiteren Aufruf dieser Funktion wird
die jeweils nächste Zeile der Ergebnismenge zurückgegeben oder null
, wenn
es keine weitere Zeile gibt.
Wenn zwei oder mehr Spalten des Ergebnisses den gleichen Namen haben, hat die letzte Spalte Vorrang und überschreibt alle vorherigen Daten. Um auf mehrere Spalten mit demselben Namen zuzugreifen, kann die Funktion mysqli_fetch_row() verwendet werden, mit der ein numerisch indiziertes Array abgerufen wird, oder es können Aliase in der Select-Liste der SQL-Abfrage verwendet werden, um den Spalten unterschiedliche Namen zu geben.
Hinweis: Bei den Spaltennamen, die von dieser Funktion zurückgegeben werden, wird zwischen Groß- und Kleinschreibung unterschieden.
Hinweis: Diese Funktion setzt NULL-Felder auf den PHP-Wert
null
.
result
Nur bei prozeduralem Aufruf: Ein von mysqli_query(), mysqli_store_result(), mysqli_use_result() oder mysqli_stmt_get_result() zurückgegebenes mysqli_result-Objekt.
Gibt ein assoziatives Array zurück, das die abgerufene Zeile enthält, wobei
jeder Schlüssel des Arrays den Namen einer der Spalten der Ergebnismenge
darstellt, oder null
, wenn es in der Ergebnismenge keine weitere Zeile
gibt. Bei einem Fehler wird false
zurückgegeben.
Beispiel #1 mysqli_result::fetch_assoc()-Beispiel
Objektorientierter Stil
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = $mysqli->query($query);
/* Abrufen eines assoziativen Arrays */
while ($row = $result->fetch_assoc()) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Prozeduraler Stil
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = mysqli_query($mysqli, $query);
/* Abrufen eines assoziativen Arrays */
while ($row = mysqli_fetch_assoc($result)) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Oben gezeigte Beispiele erzeugen eine ähnliche Ausgabe wie:
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
Beispiel #2 Vergleich der Verwendung von mysqli_result iterator und mysqli_result::fetch_assoc()
mysqli_result kann mit foreach iteriert werden. Die Ergebnismenge wird immer ab der ersten Zeile durchlaufen, unabhängig von der aktuellen Position.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, CountryCode FROM City ORDER BY ID DESC';
// Mit Iterator
$result = $mysqli->query($query);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
echo "\n==================\n";
// Ohne Iterator
$result = $mysqli->query($query);
while ($row = $result->fetch_assoc()) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA) ================== Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)