Avatar billede 7th Praktikant
17. juli 2003 - 19:32 Der er 10 kommentarer og
2 løsninger

mysql_fetch_array() vs mysql_fetch_row()

Er der nogen forskel ved brug af mysql_fetch_array() eller mysql_fetch_row() når man udtrækker data fra sin database?
Er det ene at foretrækker frem for det andet?

Eneste grund til at jeg bruger mysql_fetch_array() er at det er nemmere at huske navne fremfor numre.
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 19:41 #1
Det er en god grund - de siger selv at den ekstra tid det tager er meget beskedent
Avatar billede tipsen Nybegynder
17. juli 2003 - 19:42 #2
mysql_fetch_array() udtrækker et associativt array - dvs. du har navne fra db'en som nøgler, hvor du med mysql_fetch_row() kun har et indekseret array med nøglerne 0, 1, 2,...

mysql_fetch_row() er til gengæld hurtigere end mysql_fetch_array() og hvis du gerne vil have navne til dine variable, kan du eks. gøre dette:

$res = mysql_query('select felt1, felt2 from tabel');
while(list($var1, $var2) = mysql_fetch_row($res)) {
  echo $var1;
  echo $var2;
}

-det giver også nogle variable der er nemmere at have med at gøre i forhold til eks. $row['felt1'] og $row['felt2']!
Avatar billede 7th Praktikant
17. juli 2003 - 19:57 #3
OK, gode informationer :) Så helt generelt er der ingen mærkbare forskelle kan jeg forstå. Venter lige med at lukke til jeg har spist...
Avatar billede Slettet bruger
17. juli 2003 - 20:42 #4
I mine øjne (og i deres, tror jeg) kan du glemme mysql_fetch_row, og bare bruge mysql_fetch_array (den kan endda opføre sig som mysql_fetch_row ved at sætte 2. parameter til funktionen (mysql_fetch_array($res, MYSQL_NUM)).

Og fra manualen, det som erikjacobsen skriver:

An important thing to note is that using mysql_fetch_array() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.

Tipsen' mysql_fetch_row argument (?) med mysql_fetch_array:

$res = mysql_query('select felt1, felt2 from tabel');
while($array = mysql_fetch_row($res)) {
  extract($array);
  echo $var1;
  echo $var2;
}
Avatar billede Slettet bruger
17. juli 2003 - 20:43 #5
echo $felt1;
echo $felt2;
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 20:48 #6
Globale variabler som $var1 og $felt1 er noget rod. Den dag du har et
feltnavn, der falder sammen med en af dine andre variabler, kan du se
frem til en god lang dags kedelig debugging. Der er en god grund til
at fx de globale variabler fra forme og url som standard er slået fra.
Man skal skrive lidt mere, men man ved hvad man får.
Avatar billede Slettet bruger
17. juli 2003 - 20:52 #7
Ja - enig.

Nu behøver de jo så godt nok ikke være globale.

"Der er en god grund til at fx de globale variabler fra forme og url som standard er slået fra."

Ja og en af dem er sammenfald, som du nævner.
Avatar billede 7th Praktikant
17. juli 2003 - 21:04 #8
OK, jeg holder mig til mysql_fetch_array :) Takker for alle kommentarerne/svarene.
Der står også hos php.net at "mysql_fetch_array() is an extended version of mysql_fetch_row()", hvilket jo lyder meget fornuftigt med det I har skrevet.

5 points til hver, hvis erikjacobsen og mercur8 også lige smider et svar.
Avatar billede erikjacobsen Ekspert
17. juli 2003 - 21:07 #9
Jeg frafalder. Gode råd er gratis om torsdagen ;)
Avatar billede Slettet bruger
17. juli 2003 - 21:09 #10
Ok.
Avatar billede 7th Praktikant
17. juli 2003 - 21:14 #11
Det vil jeg huske erikjacobsen ;)
Avatar billede Slettet bruger
17. juli 2003 - 21:20 #12
Ja det er jo ikke så let, når folk følger deres egne spilleregler ... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester