我总是使用while循环来生成我数据库中的所有记录,我的一些朋友告诉我,在从数据库生成记录时使用foreach会更好,但我不知道如何使用。
<?php
$query = mysql_query("select * from sampleTABLE");
while($i = mysql_fetch_array){
echo $i['samplefieldName'];
}
?>我的问题是,如何使用foreach显示数据库中的记录?有人可以在while循环中从语法和生成结果方面对其进行比较吗,谢谢。
发布于 2013-02-06 19:20:23
@Zerkms说,在这里不需要使用foreach而不是while
while($i = mysql_fetch_array( $query)){然而,你可以通过下面的代码来做这件事,但我确信这不是一个好的方法
$result_list = array();
while($row = mysql_fetch_array($query)) {
result_list[] = $row;
}
foreach($result_list as $item) {
//you can now echo $item ; or whatever you want
}便笺
PHP整个ext/mysql扩展提供了所有以mysql_前缀命名的函数,它是officially deprecated as of PHP v5.5.0,将来将被删除。因此请使用PDO或MySQLi
好读
发布于 2013-02-06 19:42:17
不建议使用它们。
较早的mysql_xxx()函数do not允许您使用foreach遍历记录集。
但是,两种较新的替代API do都允许这样做,因为它们实现了Iterator接口。
因此,可以使用foreach在PHP语言中循环访问记录集,但不能使用旧的mysql_xxx()函数。
你可以像这样写代码:
$conn = new mysqli(....);
foreach ( $conn->query('SELECT ....') as $row ) {
print_r($row);
}或者像这样:
$db = new PDO('mysql:....', $user, $pass);
foreach ($db->query('SELECT ....') as $row) {
print_r($row);
}话虽如此,请注意,只有在PHPV5.4之后才能使用mysqli完成此操作,因此您需要更新您的PHPv5.4版本。
当然,它们也都可以使用while循环,这就是您的朋友不太正确的地方,因为while和foreach在这里实际上没有任何区别。从while切换到foreach不会对代码的性能产生任何影响。他们在引擎盖下做同样的事情。在这种情况下,foreach实际上只是“语法糖”。
我强烈建议切换到这些较新的mysql之一,即使您不打算使用PHP来执行循环,因为正如我所说的,旧的API函数已被弃用,这意味着它们可能会从未来的foreach版本中完全删除。
发布于 2013-02-06 19:25:55
不能使用foreach遍历结果集。
foreach仅适用于已经获取数据的情况。
所以你的朋友是错的,他的建议没有任何意义。
https://stackoverflow.com/questions/14727758
复制相似问题