Jump to content
php.lv forumi

Recommended Posts

Posted (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 by ray
Posted

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 />";
}
}
?>

Posted

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 />";

}

?>

Posted

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.

×
×
  • Create New...