问问题
562 次
3 回答
2
这些是您的代码中影响性能的一些问题:
您不应该
print
为表的每一行调用。这会降低性能(如果服务器没有缓存输出),因为每次调用print
时都会通过网络发送字节,这是一项代价高昂的操作,最好对一大块数据执行一次,而不是对小块数据执行多次data,这就是 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;
?>
于 2012-09-16T23:35:04.793 回答
0
试试这个。。
<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>
于 2013-02-16T11:31:20.717 回答
0
现在,您将整个数据库表放入一个 php 数组中。如果您的表很大,这可能会导致响应延迟。
试试这个,对于你填写的部分<select>
:
<?php
$query = $db->query('SELECT type FROM card_type');
while($row = $query->fetch_array()) {
print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
}
?>
于 2012-09-16T23:00:33.437 回答