繁体   English   中英

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

[英]how to use foreach loop in generating the result of mysql_query

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

<?php
    $query =  mysql_query("select * from sampleTABLE");
    while($i =  mysql_fetch_array){
    echo $i['samplefieldName'];
    }
?>

我的问题是,如何使用foreach显示数据库中的记录? 可以在while循环中比较一下它的语法并生成结果,谢谢。

就像@Zerkms说的那样,这里不需要使用foreach而不是在这里

 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
}

注意

  1. 整个ext/mysql PHP扩展(提供所有带有前缀mysql_的功能)已从PHP v5.5.0开始正式弃用,以后将被删除。 因此,请使用PDOMySQLi

好读

  1. mysql扩展名已弃用,以后将被删除:改用mysqli或PDO
  2. MySQL开发人员的PDO教程
  3. Pdo初学者教程

首先,不建议使用mysql_xxx()函数。 不建议使用它们。 建议在PHP中使用两种替代方法mysqli()PDO

年长mysql_xxx()函数不允许你使用foreach通过记录循环。

但是,两个较新的替代API 允许这样 ,因为它们实现了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);
}

话虽如此,请注意,自PHP v5.4起,只能使用mysqli进行此操作,因此,您需要与此有关的PHP版本是最新的。 另一方面, PDO支持此功能已有很长时间了。

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

即使您不打算使用foreach进行循环,我也强烈建议切换到这些较新的API之一,因为正如我所说,旧的mysql函数已被弃用,这意味着它们很可能会从中完全删除。未来的PHP版本。 因此,如果您希望代码在将来继续运行,则应立即切换。

不可能使用foreach遍历结果集。

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

因此,您的朋友只是错了,他的建议没有任何意义。

@zerkms

我也是这样想的。

我的“ tbl_login”表结构也附加为

<?php
    include '../common/dbConnection.php';

     class foreachtest{
        function foreachtesting(){
            $sql="SELECT * FROM tbl_login";
            $query_result=$GLOBALS['con']->query($sql);
            return $query_result;
        }
    }

    $myobject = new foreachtest();
    $result=$myobject->foreachtesting();


    foreach ($result as $a){
        echo $a['username'];
    }

?>

tbl_login MYSQL表屏幕截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM