ugrás a tartalomhoz

Hol tárolódik a mysql_query()-ből visszatért erőforrás?

dilettante · 2008. Május. 29. (Cs), 15.40
Sziasztok!

Amikor használok egy mysql_query()-ből visszatért erőforrást, akkor az minden alkalommal újra igénybe veszi az adatbázist? Vagy tárolódik valahol?

Pl. ebben az esetben:
<?php
$eroforras=mysql_query($jo_bonyolult_query);

if(!mysql_num_rows($eroforras)) echo $uzenet_0;
elseif(mysql_num_rows($eroforras)==1) echo $uzenet_1;
elseif(mysql_num_rows($eroforras)==2) echo $uzenet_2;
elseif(mysql_num_rows($eroforras)==3) echo $uzenet_3;
elseif(mysql_num_rows($eroforras)==4) echo $uzenet_4;
elseif(mysql_num_rows($eroforras)>4) {
    while($aktual=mysql_fetch_array($eroforras)) echo $aktual[0].'<br>';
}
?>
felmerült bennem, hogy ha itt minden egyes esetben újra igénybeveszi az adatbázist, akkor inkább már az elején berakom egy tömbbe, és annak az elemeit számolgatom a továbbiakban.

De ha az adatbázist csak a mysql_query()-nél használja, akkor nincs értelme tömbözni (az adott feladatnál).

Köszi
 
1

query

mako · 2008. Május. 29. (Cs), 16.48
a mysql_query egy eredményhalmazt (result resource) ad vissza, tehát tényleges adatbázisművelet csak a query pillanatában van.

edit:
késő van már nekem :(
de a lényeg benne van a válaszban, szóval az eredményhalmaz egy PHP változóban tárolódik, tehát onnantól kezdve a MySQL-nek nincs dolga vele.
2

Nem teljesen igaz

Poetro · 2008. Május. 29. (Cs), 16.59
Programozás tekintetében így van, ugyanakkor sajnos(?) memóriában két helyen is megvan az eredményhalmaz. Az egyik a PHP mysql kiterjesztése, a másik pedig a PHP belső puffere.

De minden egyes új mysql_query az adatbázishoz fordul. Tudni kell ugyanis, hogy alapvetően az eredmények bármikor módosulhatnak, akár azalatt az idő alatt is, amíg feldolgozod őket, ekkor ugyanis már memóriában van az eredmény (kivéve pár speciális mezőt, amit élőben olvas).
3

köszönöm

dilettante · 2008. Május. 29. (Cs), 17.09
Köszönöm a segítséget!