2009-10-08 7 views
13

Die Funktionen sind alle sehr ähnlich:mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() 

ich vor kurzem begonnen haben, mit mysql_fetch_object wie ich viel mehr OOP mit PHP tue.

Aber was sind Völker Meinungen, auf die man am besten zu verwenden ist und warum, und vielleicht, welches Szenario sie sind am besten in verwendet werden.

Vielen Dank für Ihre Meinung!

+2

Demnach ist assoc am schnellsten. http://www.spearheadsoftwares.com/tutorials/php-performance-benchmarking/50-mysql-fetch-assoc-vs-mysql-fetch-array-vs-mysql-fetch-object – Erick

Antwort

14

mysql_fetch_array finden Sie eine Reihe erhalten, die als Schlüssel haben:

  • beiden Nummern und Namen der Spalten, wenn mit MYSQL_BOTH
  • Spaltennamen, mit MYSQL_ASSOC - in diesem Fall, erhalten Sie die gleiche Sache erhalten Sie, wenn mysql_fetch_assoc
  • nur Zahlen (abhängig von der Reihenfolge der Spalten in der Abfrage) verwenden, wenn MYSQL_NUM
mit

Es ist wahrscheinlich die nützlichste Lösung, nach Spaltennamen indizierte Ergebnisse zu erhalten - zumindest einfacher zu verwenden.

Es ist jedoch in einer Situation interessant, Ergebnisse zu erhalten, die durch die Positionen der Felder in der SELECT-Klausel indiziert werden: wenn Sie mehrere Spalten mit demselben Namen oder Aliasnamen haben.
In diesem Fall können Sie, da Sie nicht zwei Einträge mit demselben Index in einem Array haben können, nur auf eine dieser Spalten zugreifen, indem Sie den Spaltennamen als Index verwenden.
Für die anderen Spalten, die denselben Namen haben, müssen Sie numerische Indizes verwenden.

Diese Situation ist wahrscheinlich der einzige Fall, für den ich mysql_fetch_array verwenden würde - und ich bevorzuge lieber Aliase in meiner Abfrage, um diese Situation zu vermeiden - es ist meiner Meinung nach klarer.


mysql_fetch_assoc erhalten Sie ein Array, mit Spaltennamen als Schlüssel und Daten als Werte.

Nicht viel zu sagen, eigentlich.


Und mysql_fetch_object erhalten Sie objetcs im Gegenzug.


Die Wahl zwischen mysql_fetch_assoc und mysql_fetch_object höchstwahrscheinlich davon ab, wie Sie Ihre Anwendung entwickeln: Wenn Objekte überall verwendet wird, die zweite ist wahrscheinlich die am besten geeignet.

Wenn Sie Arrays als Datencontainer verwenden, können Sie einfach mit dem ersten gehen.

1

mysql_fetch_array() ruft eine Ergebniszeile als assoziatives Array, numerisches Array oder beides ab. Es gibt ein Array von Strings zurück, das der abgerufenen Zeile entspricht, oder FALSE, wenn keine Zeilen mehr vorhanden sind. Der Typ des zurückgegebenen Arrays hängt davon ab, wie $ result_type definiert ist.

Wenn Sie MYSQL_NUM verwenden, erhalten Sie nur Zahlenindizes (als $ row [0], $ row 1 usw.), d. H. Numerisches Array.

Wenn Sie MYSQL_ASSOC verwenden, erhalten Sie nur assoziative Indizes (als $ row ["id"], $ row ["name"] usw.), also assoziatives Array.

Wenn Sie MYSQL_BOTH (Standard) verwenden, erhalten Sie ein Array mit assoziativen und numerischen Indizes. (als $ row [0], $ row ["name"] usw.), d. h. sowohl numerisches Array als auch assoziatives Array.

mysql_fetch_assoc() ruft eine Ergebniszeile als assoziatives Array ab. (Spaltennamen als Schlüssel)

mysql_fetch_object() ruft die Ergebniszeile als Objekt ab.

Es gibt ein Objekt mit Eigenschaften zurück, die der abgerufenen Zeile entsprechen, und verschiebt den internen Datenzeiger nach vorne.

Für mich gibt es Vorteile der Verwendung von mysql_fetch_assoc() in dem Sie die Array-Funktionen wie array_walk und uasort() verwenden können.

0

Kurzbeschreibung:

mysql_fetch_assoc(): Diese bekommt man ein assoziatives Array von Daten.

mysql_fetch_array(): Dies gibt eine Kombination aus assoziativen Elementen sowie Daten mit numerischem Index zurück.

mysql_fetch_object(): Gibt ein Objekt mit Eigenschaften zurück, die der abgerufenen Zeile entsprechen.

Source

Verwandte Themen