首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用foreach循环生成mysql_query结果

如何使用foreach循环生成mysql_query结果
EN

Stack Overflow用户
提问于 2013-02-06 19:18:54
回答 4查看 3K关注 0票数 0

我总是使用while循环来生成我数据库中的所有记录,我的一些朋友告诉我,在从数据库生成记录时使用foreach会更好,但我不知道如何使用。

代码语言:javascript
复制
<?php
    $query =  mysql_query("select * from sampleTABLE");
    while($i =  mysql_fetch_array){
    echo $i['samplefieldName'];
    }
?>

我的问题是,如何使用foreach显示数据库中的记录?有人可以在while循环中从语法和生成结果方面对其进行比较吗,谢谢。

EN

回答 4

Stack Overflow用户

发布于 2013-02-06 19:20:23

@Zerkms说,在这里不需要使用foreach而不是while

代码语言:javascript
复制
 while($i =  mysql_fetch_array( $query)){

然而,你可以通过下面的代码来做这件事,但我确信这不是一个好的方法

代码语言:javascript
复制
$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,将来将被删除。因此请使用PDOMySQLi

好读

  1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
  2. PDO Tutorial for MySQL Developers
  3. Pdo Tutorial For Beginners
票数 2
EN

Stack Overflow用户

发布于 2013-02-06 19:42:17

不建议使用它们。

较早的mysql_xxx()函数do not允许您使用foreach遍历记录集。

但是,两种较新的替代API do都允许这样做,因为它们实现了Iterator接口。

因此,可以使用foreach在PHP语言中循环访问记录集,但不能使用旧的mysql_xxx()函数。

你可以像这样写代码:

代码语言:javascript
复制
$conn = new mysqli(....);
foreach ( $conn->query('SELECT ....') as $row ) {
    print_r($row);
}

或者像这样:

代码语言:javascript
复制
$db = new PDO('mysql:....', $user, $pass);
foreach ($db->query('SELECT ....') as $row) {
    print_r($row);
}

话虽如此,请注意,只有在PHPV5.4之后才能使用mysqli完成此操作,因此您需要更新您的PHPv5.4版本。

当然,它们也都可以使用while循环,这就是您的朋友不太正确的地方,因为whileforeach在这里实际上没有任何区别。从while切换到foreach不会对代码的性能产生任何影响。他们在引擎盖下做同样的事情。在这种情况下,foreach实际上只是“语法糖”。

我强烈建议切换到这些较新的mysql之一,即使您不打算使用PHP来执行循环,因为正如我所说的,旧的API函数已被弃用,这意味着它们可能会从未来的foreach版本中完全删除。

票数 2
EN

Stack Overflow用户

发布于 2013-02-06 19:25:55

不能使用foreach遍历结果集。

foreach仅适用于已经获取数据的情况。

所以你的朋友是错的,他的建议没有任何意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14727758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档