Portál AbcLinuxu, 9. května 2025 23:34
Zdravim, mam objekt http://pastebin.com/m205ca6a1 a pozoruji na nem zvlastni chovani...
Nekde v kodu jsem pouzil tento zapis:
$query = DB::query( $sql );
$numb = DB::workup( $query, _num_rows );
pricemz vystup byl v poradku - dle kontroly pres db rozhrani
ale pote jsem metodu workup volal s parametrem _fetch_array stejne jako predhozim zpusobem, pozadovana promenna se nevyplni a pritom se nezachyti zadna vyjimka, kdyz to ale udelam takhle:
$query = DB::query( $sql );
$link = mysql_fetch_array( $query );
tak promenna $link obsahuje to, co ma...
Jsem bezradny, nedokazali mi zatim poradit ani nejvetsi php guru - asi ne, ze nevedeli, ale zrejme proto, ze nemeli cas o tom poradne premyslet, tak jsem to hodil sem.
Moc dekuji predem za odpoedi
$query = DB::query( $sql ); mysql_fetch_array( $query ); $link = mysql_fetch_array( $query );Protože to je přesně to, co ta dynamická šílenost dělá.
Ano, takhle mi to funguje... Troufl bych si rict, ze tam dela "bordel" jen ten mysql_fetch_array, ponevadz, kdyz to prubnu s mysql_num_rows napr., tak to projde a vyhodi to jednicku Ale porad mi unika, co mam spatne... Potreboval bych to nejak rozchodit :-/
mysql_fetch_array
ručně, z výsledku SQL dotazu se vezme jeden řádek a ten se ti vrátí. Když použiješ to automagické DB::workup($query, _fetch_array)
, tak se mysql_fetch_array zavolá jednou, výsledek se zahodí (tj. přijdeš o ten jeden řádek) a pak se mysql_fetch_array
zavolá podruhé a teprve tento výsledek se ti vrátí. Takže při použití DB::workup($query, _fetch_array)
přijdeš o každý lichý řádek.
Rozdíl mezi mysql_fetch_array
a mysql_num_rows
je ten, že mysql_num_rows
můžeš volat kolikrát chceš za sebou a vždy vrací stejný výsledek; naopak funkce mysql_fetch_array
má vedlejší účinky.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.