Halihallo Christian
Kann mir jemand den Unterschied zwischen der MySQL-Funktion (PHP) mysql_fetch_assoc() und mysql_fetch_object() erklären? Ich weiss dass mysql_fetch_assoc() ein assoziatives Array zurückgibt, während mysql_fetch_object() ein Objekt zurückliefert. Die Datensätze lassen sich ja mit beiden Funktionen ausgeben, einzig die Syntax ist etwas unterschiedlich. Gibt es Vorteile wenn ich die Resultate in ein Objekt schreibe (mysql_fetch_object())? Falls ja welche? Wie sieht es mit der Performance aus? Welche Funktion ist empfehlenswerter? Danke für jeden Hinweis!
Nun, das schnellste wird wohl immer noch ein mysql_fetch_array mit MYSQL_NUM sein, denn
dies entspricht am besten dem, was zwischen Server und Client kommuniziert wird. Alles
andere, ob nun mysql_fetch_assoc oder -object, bedingt eine grössere PHP interne
Konvertierung und geht eigentlich immer mit einer Speicherplatzverschwendung einher, da
die Attributnamen bei jedem Datensatz mitgeliefert werden.
Zu assoc bzw. MYSQL_ASSOC / MYSQL_BOTH : Bei jedem Datensatz werden die Attributnamen
mitgeliefert, das braucht a) Speicher und b) Performance. Bei _object werden alle
Attributwerte als Funktionen repräsentiert, welche auch zuerst im Object referenziert
werden müssen; sprich: holst du einen Wert aus einer _object-Rückgabe, rufst du in
wirklichkeit jedesmal eine Funktion auf, die als Rückgabewert den Attributwert enthält.
Also: mysql_fetch_array mit MYSQL_NUM ist IMO das speicher- und performanceschonendste.
Zumindest halte ich dies für sehr wahrscheinlich, gebenchmarked habe ich dies noch nie.
Aber: Einen sehr grossen Unterschied ist zwischen diesen, ist wohl kaum feststellbar.
Viele Grüsse
Philipp
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.