0

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

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

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

4

4 回答 4

2

正如@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
}

笔记

  1. 整个ext/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
  2. MySQL 开发人员的 PDO 教程
  3. Pdo 初学者教程
于 2013-02-06T11:20:23.480 回答
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循环,这就是你的朋友不太正确的地方,因为whileforeach这里真的没有任何区别。从 切换whileforeach不会对代码的性能产生任何影响。他们在引擎盖下做同样的事情。foreach在这种情况下,实际上只是“语法糖”。

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

于 2013-02-06T11:42:16.710 回答
1

无法使用foreach.

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

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

于 2013-02-06T11:25:54.807 回答
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 表截图

于 2019-07-19T03:29:11.813 回答