[英]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.