33 Stimmen

MySQL/PHP: Unterschied zwischen mysql_fetch_array, mysql_fetch_row und mysq_fetch_assoc

Frage von Compi | 30.10.2012 um 17:26

Beim Speichern des Ergebnisses einer MySQL-Abfrage in ein Array in PHP begegnen mir in diversen Skripten immer wieder die drei Funktionen mysql_fetch_row(), mysql_fetch_array() und mysql_fetch_assoc().

Was aber ist genau der Unterschied zwischen diesen Funktionen? Wie es mir scheint werden die Funktionen synonym gebraucht, wieso braucht man dann drei Stück davon?

AntwortenPositivNegativ
7Beste Antwort7 Stimmen

In der Tat liefern dir alle 3 Funktionen einen Array mit den Daten deiner MySQL-Abfrage. Der Unterschied liegt darin, dass dieser Array entweder als indizierter oder als assoziativer Array zurückgegeben werden kann.

  • Auf einen indizierten Array greift man mit dem Index (einer Zahl beginnend bei 0 zu), zum Beispiel $arr[0] oder $arr[7].
  • Auf einen assoziativen Array greift man dagegen mit dem Feldnamen zurück, der dem Namen der Spalte in deiner MySQL Datenbank entspricht, also zum Beispiel $arr['id'] oder $arr['vorname'].

Je nach Funktion gibt es folgende Unterschiede:

  • mysql_fetch_row() liefert einen indizierten Array
  • mysql_fetch_assoc() liefert ein assoziatives Array
  • mysql_fetch_array() kann entweder ein indiziertes Array, ein assoziatives Array oder beides liefern. Dazu können die Parameter MYSQL_NUM, MYSQL_ASSOC oder MYSQL_BOTH verwendet werden. Lässt man den Parameter weg, wird MYSQL_BOTH als Default verwendet.

Näher habe ich dieses Thema in der Info MySQL Ergebnis in ein Array speichern erklärt.
01.11.2012 um 15:34

AntwortenPositiv Negativ
Antworten

Ä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.