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

时间:2013-02-06 11:18:54

标签: php

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

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

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

4 个答案:

答案 0 :(得分:2)

没有必要使用foreach而不是在这里,因为@Zerkms说

 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_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDOMySQLi
  2. 好读

    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

答案 1 :(得分:2)

首先,不推荐使用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循环,这是你的朋友不太正确的地方,因为while和{之间没有任何区别{1}}在这里。从foreach切换到while不会对代码的性能产生任何影响。他们在引擎盖下做同样的事情。在这种情况下,foreach实际上只是“语法糖”。

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

答案 2 :(得分:1)

无法使用foreach迭代结果集。

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

所以你的朋友错了,他的建议毫无意义。

答案 3 :(得分:0)

@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 table screenshot