为了账号安全,请及时绑定邮箱和手机立即绑定

mysqli_fetch_row() 在 PHP 中的 foreach() 之后不显示

mysqli_fetch_row() 在 PHP 中的 foreach() 之后不显示

PHP
HUX布斯 2022-01-24 10:52:49
当 foreach 后跟显示相同查询结果的 mysqli_fetch_row 时,mysqli_fetch_row() 不会显示。但是,如果 mysqli_fetch_row 在 foreach() 显示之前执行。为什么是这样?询问:<?php$connection = mysqli_connect("localhost", "root", "", "login_app");$query = "SELECT *          FROM users";$result = mysqli_query($connection, $query);if(!$result){    die("db connection failed " . mysqli_error());}?>仅显示 FORACH 的结果:   <?php   foreach($result as $results){        echo "User ID: " . $results['userID'] . "<br>";        echo "Username: " . $results['userName'] . "<br>";        echo "Password: " . $results['password'] . "<br>";    };    $row = mysqli_fetch_row($result);    print_r($row);    ?>  显示 FOREACH 和 MYSQLI_FETCH_ROW 的结果:    <?php    $row = mysqli_fetch_row($result);    print_r($row);    foreach($result as $results){        echo "User ID: " . $results['userID'] . "<br>";        echo "Username: " . $results['userName'] . "<br>";        echo "Password: " . $results['password'] . "<br>";    };    ?>  
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

执行 SELECT 查询并mysqli_query返回一个mysqli_result对象。该对象实现Traversable了 ,这就是您能够使用 foreach 循环来显示结果的原因。

foreach($result as $results){ ...

基本上是一种更方便的做法

while ($results = mysqli_fetch_row($result)) { ...

(请参见此处的示例 #3 。)

无论采用哪种方式,您都在获取所有结果,并且当您到达结果集的末尾时,$results将保存最后一个获取的值 ( null)。


查看完整回答
反对 回复 2022-01-24
?
当年话下

TA贡献1890条经验 获得超9个赞

手册

从结果集中获取一行数据并将其作为枚举数组返回,其中每一列存储在从 0(零)开始的数组偏移量中。对该函数的每次后续调用都将返回结果集中的下一行,如果没有更多行,则返回 NULL。

通过使用 foreach 循环迭代结果集,您实际上耗尽了所有行,这就是为什么在循环之后的任何后续行提取中都没有数据可用的原因。


查看完整回答
反对 回复 2022-01-24
  • 2 回答
  • 0 关注
  • 302 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信