[英]Using php to fill a <select> on webpage. Looking for a faster load time
我補充說:
<select>
<option value=""></option>
<?php include 'connect/config.php'; ?>
<?php include 'connect/opendb.php'; ?>
<?php
$query = $db->query('SELECT type FROM card_type');
$rows = $query->fetchAll();
foreach($rows as $row) {
print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
?>
<?php $db =null ?>
</select>
到我的頁面,現在加載頁面需要大約5秒鍾。
是否有更有效的方法從數據庫填充選項框?
這些是您的代碼中影響性能的一些問題:
您不應該為表格的每一行調用print
。 這會影響性能(如果服務器沒有緩存輸出),因為每次調用print
你都會在網上發送字節,這是一項代價高昂的操作, 對於一大塊數據而言,最好是一次,而不是小塊的多次數據 ,這就是Web服務器在將其發送到瀏覽器之前經常緩存所有PHP輸出的原因。
在使用foreach遍歷數組時,應該通過引用傳遞數組值 ,以避免在循環的每次迭代中復制變量。
用逗號回聲,而不是句號 。 如果使用句點,PHP必須在輸出之前連接字符串。 如果你使用逗號,它只是按順序輸出它們而不需要額外的處理。
你應該使用echo而不是print()
。 作為語言結構而不是函數,echo比print()具有輕微的性能優勢。
因此,這是您的代碼,上面的第2,3和4點已得到糾正,因此假設您的Web服務器正在緩存輸出:
<?php
$query = $db->query('SELECT type FROM card_type');
$rows = $query->fetchAll();
foreach($rows as &$row) {
echo '<option value="', $row['type'] ,'">' ,$row['type'] , '</option>';
}
?>
這是您的代碼,上面的第1點和第2點已更正,因此假設您的Web服務器沒有緩存輸出:
<?php
$query = $db->query('SELECT type FROM card_type');
$rows = $query->fetchAll();
$out = '';
foreach($rows as &$row) {
$out .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
echo $out;
?>
現在,您將整個數據庫表放入php數組中。 如果您的表很大,這可能會導致響應延遲。
請嘗試使用此選項,對於填充<select>
:
<?php
$query = $db->query('SELECT type FROM card_type');
while($row = $query->fetch_array()) {
print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
?>
試試這個......
<select>
<option value=""></option>
<?php
include 'connect/config.php';
include 'connect/opendb.php';
$query = $db->query('SELECT type FROM card_type');
$rows = $query->fetchAll();
$select_option = '';
foreach($rows as $row) {
$select_option .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
echo $select_option;
unset($db);
?>
</select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.