ray Posted January 4, 2008 Report Posted January 4, 2008 (edited) ir šāda kods: <?php $sql = mysql_query("SELECT * FROM tabula_1"); if (mysql_num_rows($sql) > 0) { ?> Virsraksts <?php } $sql = mysql_query("SELECT * FROM tabula_1"); while($row = mysql_fetch_array($sql)) { echo $row["lauks_1"]." ".$row["lauks_2"]."<br />"; } ?> kodā tiek veikti 2 pieprasījumi/vaicājumi uz datu bāzi, vai šādu variantu var optimizēt? Edited January 4, 2008 by ray
Vebers Posted January 4, 2008 Report Posted January 4, 2008 Jā. <?php if ($sql = mysql_query("SELECT lauks_1, lauks_2 FROM tabula_1")) { ?> Virsraksts <?php while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo $row["lauks_1"]." ".$row["lauks_2"]."<br />"; } } ?>
andrisp Posted January 4, 2008 Report Posted January 4, 2008 Vebers, mysql_query atgriezīs pozitīvu atbildi arī, ja ierakstu skaits būs 0.
Kristabs Posted January 4, 2008 Report Posted January 4, 2008 a priekš kam divreiz query`ot? <?php $sql = mysql_query("SELECT * FROM tabula_1"); if (mysql_num_rows($sql) > 0) { ?> Virsraksts <?php } while($row = mysql_fetch_array($sql)) { echo $row["lauks_1"]." ".$row["lauks_2"]."<br />"; } ?>
Lynx Posted January 5, 2008 Report Posted January 5, 2008 mysql_num_rows ir salīdzinoši daudz lēnāks par vienkārši mainīgā palielināšanu, nekad neizmantot * :), kā arī pēc dotajiem piemēriem nav jēgas izmantot fetch_array, ja piekļūstam vērtībām tikai ar kollonas nosaukumu. Šeit pietiek ar fetch_assoc, es darītu šādi: <?PHP $i = 0; $query = mysql_query('SELECT lauks_1, lauks_2 FROM tabula_1'); while($row = mysql_fetch_assoc($query)) { ++$i; if($i === 1) { echo 'Virsraksts'; } echo $row['lauks_1'],' ',$row['lauks_2'],'<br />'; } ?> Tāpat iesaku, nekad neveidot divus identiskus querijus. Labāk pirmā querija atgrieztos datus ielikt array un tad vērsties pie array. Jo gandrīz vienmēr datubāze ir tas elements, kas visvairāk bremzē ātrumu un vērsties pie array būs salīdzinoši ātrāk.
Recommended Posts