Forskelle på mysql_fetch_array mysql_fetch_assoc osv.

Tags:    databaser

Hej udviklere.

Har tænkt længe på hvad forskellen er på alle de mysql_fetch_array, mysql_fetch_assoc osv. er.

Ved at mysql_num_rows der tæller den antallet af rækker, men hvad med alle de andre??



Et kig på:
http://dk2.php.net/mysql_fetch_array og http://dk2.php.net/manual/en/function.mysql-fetch-assoc.php gav svaret.

mysql_fetch_array henter resultat både som numerisk og assosiativt medmindre du sætter argument nummer 2. mysql_fetch_assoc henter bare en associativ array.

Forskellen på en numerisk og en associativ array er:

Numerisk: row[0], row[1] osv.
Associativ: row['id'], row['name'] osv.

Det er min forståelse. Vil skyde på at fetch_array bruger lidt mere hukommelse og tid siden den skal lave det der svarer til en ekstra array men er ikke sikker.

Hvor fetch_assoc kun henter den associative er der også en som kun henter den numeriske: mysql_fetch_row



Indlæg senest redigeret d. 01.06.2009 00:44 af Bruger #14645
Som Søren nævnte, så ligger forskellen i hvordan du vil tilgå dine data.

Da jeg lærte PHP/MySQL lærte jeg altid at bruge mysql_fetch_array, dog brugte jeg aldrig i mit liv de numeriske indeks til at tilgå mit data og da jeg fandt ud af at der fandtes en funktion som faktisk kun gjorde det jeg ville have den til (mysql_fetch_assoc) begyndte jeg at bruge denne. Som en hovedregel skal man jo bare bede om at få sine data i den form man vil benytte den i, og det giver nu engang mere mening at tilgå kolonnerne per navn og ikke per indeks i min mening.

Den umiddelbare fordel ved mysql_fetch_row / de numeriske indekser ligger i queries som indeholder kolonner alla:

SELECT 2, 5, COUNT(*) FROM mintabel

Her har kolonnerne intet navn og det kan her blive lidt, underligt at tilgå dem via mysql_fetch_assoc. Dog kan man snildt komme uden om dette ved at ændre sin query:

SELECT 2 AS to, 5 AS fem, COUNT(*) AS Count FROM mintabel

Her kan man så bruge indekserne 'to', 'fem' og 'Count'.

Håber det hjalp lidt.



t