打印行列表的正确方法是什么?
<?php
$list = '';
$sql = mysql_query("SELECT name FROM users");
while($row = mysql_fetch_array($sql)){
$name = $row["name"]; // row in set var
$list.= '<li>'.$name.'</li>'; // set variable in list var
}
?>
<html>
<ul><?php print $list ?></ul>
</html>
或者这个。
<?php
$list = '';
$sql = mysql_query("SELECT name FROM users");
while($row = mysql_fetch_array($sql)){
$list.= '<li>'.$row["name"].'</li>'; // row in list var
}
?>
<html>
<ul><?php print $list ?></ul>
</html>
我知道这似乎是一个愚蠢的问题,但对我来说并非如此。 我用过这两种方法,我很好奇。
- 有没有首选方法?
- 快一种方式(甚至几分之一毫秒)
- 哪一个更正式
PS:我通常使用PDO,所以请不要在mysql上打包,我只是为了举例而输入这个。
提前感谢您的反馈。
试试这个,而不是存储和打印,你可以直接在你的HTML中打印。
<ul>
<?php
$list = '';
$sql = mysql_query("SELECT name FROM users");
while($row = mysql_fetch_array($sql)){
echo '<li>'.$row["name"].'</li>'; // row in list var
}
?>
</ul>
在我看来,更快的方法是避免使用冗余变量和不必要的方法。请注意,您正在while
中连接字符串,因此您要为表的每一行创建一个连接。
在我看来,最好的方法是这样。
PHP部分:
$results = array();//This is only to be sure that the array is empty
$sql = mysql_query("SELECT name FROM users");
while($row = mysql_fetch_array($sql)){
$results[] = $row['name'];
}
?>
网页部分:
<ul>
<?php foreach($results as $result){ ?>
<li><?php echo $result; ?></li>
<? } ?>
</ul>
通过这样做,您可以避免这些连接,并且还可以使HTML远离PHP代码。也许这不是最快的选择,但我认为它足够快,正式和干净。
此外,在PHP代码中维护HTML代码是一种痛苦,所以我真诚地建议您避免这种情况,即使在这个例子中也是如此。