Začetniško mysql vprašanje - mysqli_fetch_array()
5 naročnikov
5 naročnikov
Iz baze poberem en podatek. Ker je samo en, vem, da obstaja neka "finta", da ti ni potrebno uporabiti mysqlifetcharray() ampak na hitro daš to vrednost v spremenljivko vendar sem pozabil kako.
Torej, zanima me, kako bi krajše zapisal spodnjo kodo, če vem, da je v $r2 samo ena vrstica oziroma samo en podatek...
while($tip = mysqlifetcharray($r2, MYSQLI_NUM)) {
$tip = $tip[0];
}
Prav tako me zanima zakaj mi vrednosti spremenljivke $tip izven while zanke ne izpiše (možno jo je uporabiti le v zanki while jaz pa bi jo rad uporabil tudi izven)?
9 odgovorov
(Vini, da ti malo preveri kodo foruma, ker se mi kar pogosto zgodi, da urejam sporočilo in potem mi kar dvojnega pošlje in ga moram še enkrat popravljati)
Ne uporabiš while, in namesto mysqlfetcharray() uporabiš mysqlfetchassoc().
$tip = mysql_fetch_assoc($r2, MYSQLI_NUM);
$tip = $tip['neko_polje_v_bazi'];
Tole, da uporabim mysqlfetchassoc() namesto mysqlfetcharray() ne bo ravno držalo, saj je funkcija mysqlfetchassoc() le krajši, identični zapis mysqlfetcharray($r, MYSQLIASSOC) sam pa MYSQLIASSOC, MYSQLI_BOTH ne uporabljam, ker sta pač počasnejša ter porabita več memory. Čeprav strani keširam, sem se tako pač navadil. :-) Drugače pa seveda, ruknem stran while pa je. :/
PDOStatement ima funkcijo fetchColumn(0), ki v praksi izgleda takole:
$podatek = $db->query('select something from table where id = 3')->fetchColumn(0);
Zakaj še uporabljate mysql_* funkcije, mi kdo pove svoje razloge?
Mislim da bo bolje če bolj paziš kak imaš sam query ... dvomim da se ti pri enem zapisu karkoli pozna kako to izpišeš :D
@fatq se strinjam :D
fatg:
Zakaj še uporabljate mysql_* funkcije, mi kdo pove svoje razloge?
Lahko na kratko opišeš kakšne so prednosti PDOStatement? Jaz uporabljam kar mysql_* funkcije, ker z njimi delam že od začetka in so pri enostavnih primerih zame dovolj.
V drugem sporočilu sem kopiral od carli in sem pozabil dodati "i". Sam ne uporabljam mysql_ ampak mysqli_ ... Za 5PDOStatement pa prvič slišim... sem še bolj začetnik
@Halo
omogoča prepared statements (varnost in hitrost++), objekten pristop, doda exceptione, posledica je krajša in varnejša koda. Poenostavi delanje z LOB (large object) polji in ima še razne sladkorčke, kot je bindParam.
Kot extra dodatek je še abstrakcija od baze, torej se za menjavo baze (na obstoječem ali novem projektu) ne rabiš učiti nič novega, samo queryje prilagodiš.