Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySql-haun tulostamisesta

ajv [19.08.2004 19:20:09]

#

Kyse on siis tietokantakyselyn tulostamisesta selaimelle. Tapojahan on monia ja itse olen jumittanut seuraavanlaiseen silmukkaan:

<?php
//$sql-muuttujassa on tietokantahaun tulokset
while($r = mysql_fetch_array($sql)){
   echo $r['foo'];
}

//Ja jos oikein haluaa varmistella, niin:
while(($r = mysql_fetch_array($sql)) !== false){
   echo $r['foo'];
}
?>

Myös paljon käytetty on tuo putkan oppaissakin esitelty

<?php
for($i = 0; $i < mysql_num_rows($sql); $i++){
   echo mysql_result($sql, $i, "foo");
}

Jostain olen saanut sen käsityksen, että tuo on hieman vanhentunutta käytäntöä jo. Vai miten on?

Ainakin omasta mielestäni tuo ensimmäinen esimerkki on paljon selkeämpi ja lisäksi jos kannasta haetaan samalla kyselyllä useampia sarakkeita, saa sarakkeiden nimet suoraan muuttujiksi kätevästi extract()-funktiolla:

<?php
while($r = mysql_fetch_array($sql)){
   extract($r);
   echo "$foo,$foo1,$foo2,$foo4";
}
?>

Miten on? Miten te muut olette hoitaneet nuo silmukat? Ja miksi juuri sillä tyylillä?

Antti Laaksonen [19.08.2004 19:43:54]

#

Itse tapaan käyttää tuota toisena olevaa "perinteistä" tapaa. Syynä on se, että toteutus toimii ihan hyvin ja olen tottunut käyttämään sitä. Kieltämättä tuo toinen tapa voisi lyhentää koodia. Toisaalta silloin tiedot on pakko käydä yksi kerrallaan läpi. Lopputulokseen tällä asialla ei kuitenkaan ole vaikutusta, eli kannattaa varmaan valita se menetelmä, josta itse pitää eniten. :)

Olga [19.08.2004 23:05:48]

#

Itse olen tykästynyt mysql_fetch_assoc() - funktioon. Sehän siis palauttaa pelkästään tuon assosiatiivisen taulukon, kun taas tuolla _array():llä saa halutessaan myös numeerisen, tai vain jommankumman. Mutta kukin tyylillään, sanoi hanhiemo :)

henkka [21.08.2004 14:37:54]

#

Itse olen aina objektien perään, joten mysql_fetch_object on minua varten. Samahan se on käyttääkö arraytä vai objektia, mutta objekti tuntuu loogisemmalta.

edit: TYPO...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta