Normalt sätt brukar for-slingor förespråkas framför andra metoder att loopa ut data. Hur det är i ditt fall vet i sören, för jag är inte tillräckligt hemma än i vad de olika metoderna returnerar.
mysql_num_rows skall du iaf inte sätta i for parentesen. Det räknar du ut innan (för som jag förstår står detta värde sig genom alla körningar).
Det rör sig om flera 100 % i körtider.
Jag har inte tittat närmare på det rent prestandamässigt. Men kör du *nix finns ett program som heter ApacheBench (eller nått liknande, tror inte det finns i win-versionen) som följer med Apache. I Apache's bin heter det binären ab.
Där kan du själv testa vad som går bäst. Men var är det för fel på:
varför inte sätta mysql_num_rows i for loopen? Det kontrollerar ju bara hur många rader som queryn ger tillbaka... Borde ju inte vara någon större prestandavinst att spara det till en variabel innan forloopen... while loopen kör jag i vanliga fall, jag satt bara å experimenterade lite å kom å tänka på det olika varianterna och tyckte att det vore bäst att kolla med profsen!
Det är klart att man får en lite prestandavinst om man tilldelar en variabel med mysql_num_rows() och sen använder den variabeln som jämförelse istället. Men skillnaden är nog marginell.
Använder du for-loopen får du en massa ( Nåja, två ;) ) skräp-variabler, vilket jag inte tycker om - och eftersom att for-loopar också är de mest komplexa looparna så är den troligtvis söligare. Använd while().