【问题标题】:How does the mysqli_fetch_assoc function work?mysqli_fetch_assoc 函数是如何工作的?
【发布时间】:2018-01-01 22:36:49
【问题描述】:

我在 while 循环中有一个关于 mysqli_fetch_assoc 的问题。

$query = "SELECT * FROM category ";

$result = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($result))
{
    $cat_id = $row['cat_id'];
    $cat_title = $row['cat_title'];

    echo $cat_id . " " . $cat_title  ."<br>";
}

那么,$row = mysqli_fetch_assoc($result) 是如何工作的?

所以它从$results 一次循环一行并将该信息存储在$row 中,直到没有行可以返回?

而这个 mysqli_fetch_assoc($result) 在 while 循环迭代中是这个“数组(它从 $result 获得的一些行)”?

$row = mysqli_fetch_assoc($result)$row = array(all rows from $result that are gathered by mysqli_fetch_assoc) 一样吗?

这意味着$row实际上是一个数组,并且每次循环时信息都不会被new覆盖而是被添加?

【问题讨论】:

  • 基本正确。
  • 专业提示:您可以免费阅读大多数 PHP 函数的文档。使用手册比发布到 Stack Overflow 更快、更可靠。 php.net/manual/en/mysqli-result.fetch-assoc.php 说:“返回对应于获取的行的关联数组,如果没有更多行,则返回 NULL。
  • 您是否尝试过阅读文档并尝试在每个循环中打印出 $row 的内容?
  • 不是真的,我有时会迷失在那些文档中,我只是喜欢从人类那里得到答案,因为我是新手。不管怎样,谢谢。 :)
  • @JayBlanchard 应该作为答案发布,恕我直言。 (哈哈)。当然开个玩笑;-)

标签: php mysqli


【解决方案1】:

当使用mysqli_fetch_assoc() 函数时,PHP 会将数据库中的数据放入关联数组中。然后,您可以将数据从循环内的数组中提取出来。

由于没有增量告诉循环何时停止,while 循环会处理这个问题。所以你可以这样读:

虽然mysqli_fetch_assoc() 有更多记录,但请继续循环。当它用完时,停止。

【讨论】:

    【解决方案2】:

    返回对应于获取的行的关联数组,如果没有更多行,则返回 NULL。 - from PHP manual on mysqli_fetch_assoc()

    每当您调用get_result()mysqli_query() 时,您都会收到一个mysqli_result 对象。该对象包含从 MySQL 数据库服务器获取的数据。来自 SQL 的数据按行返回给 PHP。 mysqli_fetch_assoc() 的目的是从该对象中获取一行并将内部指针移动到下一行。下次您在同一个对象上调用此方法时,它将获取第二行并将指针移动到下一行。一旦指针移出最后一行,此函数将继续返回 NULL

    每个返回数组中的值对应于 MySQL 结果集中的一行。这些值存储为关联数组。每个键都是 SQL 中的一个列名。

    while 循环的目的是简单地一遍又一遍地调用同一个函数,直到它返回NULL

    请记住,使用while 循环并不是最好的方法。最好直接使用foreach

    $query = "SELECT * FROM category ";
    
    $result = $connection->query($query);
    foreach ($result as $row) {
        $cat_id = $row['cat_id'];
        $cat_title = $row['cat_title'];
    
        echo $cat_id . " " . $cat_title  ."<br>";
    }
    

    【讨论】:

      【解决方案3】:

      最简单的解释是,

      当您运行 mysqli_query() 时,对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个包含数据库数据的 mysqli_result 对象。


      • mysqli_fetch_assoc() - 在每次调用时获取结果行(来自mysqli_result 对象的一行)作为关联数组,并将内部指针移动到下一个。 $row 用于存储包含mysqli_result 对象获取的单行数据'

      • 的关联数组

      您可以使用$row['column_name']检索属于该原始数据的数据

      • while 循环反复调用mysqli_fetch_assoc()。获取一行后,它会转到下一行,以此类推,直到到达对象的末尾并返回NULL,这意味着falsebreaks while 循环。

      【讨论】:

      • "while 循环在行之间移动。" 这不是真的。 while 循环只是一遍又一遍地调用相同的函数。 mysqli_fetch_assoc() 在内部循环结果,每次调用时移动到下一行。
      猜你喜欢
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 2021-03-30
      • 2020-07-18
      • 2015-11-08
      • 2017-05-21
      • 2011-04-24
      • 2017-12-08
      相关资源
      最近更新 更多