Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli_fetch_assoc函数是如何工作的?_Php_Mysqli - Fatal编程技术网

Php mysqli_fetch_assoc函数是如何工作的?

Php mysqli_fetch_assoc函数是如何工作的?,php,mysqli,Php,Mysqli,我有一个关于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 . "

我有一个关于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>";
}
$query=“从类别中选择*”;
$result=mysqli\u查询($connection,$query);
while($row=mysqli\u fetch\u assoc($result))
{
$cat_id=$row['cat_id'];
$cat_title=$row['cat_title'];
echo$cat_id.“$cat_title.”
“; }
那么,
$row=mysqli\u fetch\u assoc($result)
是如何工作的呢

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

这个
mysqli\u fetch\u assoc($result)
在while循环迭代中是“数组(它从$result获得的一些行)”吗

$row=mysqli\u fetch\u assoc($result)
$row=array(mysqli\u fetch\u assoc收集的$result中的所有行)


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

使用
mysqli\u fetch\u assoc()函数时,PHP将数据库中的数据放入关联数组中。然后可以从循环内部的数组中提取数据

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


当mysqli\u fetch\u assoc()
有更多记录时,保持循环。当它用完时,停下来。

最简单的解释是

当您运行成功的选择、显示、描述或解释查询时,
mysqli\u query()
将返回一个
mysqli\u结果
对象,其中包含来自数据库的数据


  • -每次调用时,将结果行(来自
    mysqli_result
    对象的一行)提取为关联数组,并将内部指针移动到下一行
    $row
    用于存储关联数组,该数组包含从
    mysqli\u结果
    对象获取的单行数据

您可以使用
$row['column\u name']

  • while
    循环反复调用
    mysqli\u fetch\u assoc()
    。获取一行后,它将转到下一行,依此类推,直到到达对象的末尾并返回
    NULL
    ,这意味着
    false
    循环期间中断
返回与获取的行相对应的关联数组,如果没有更多行,则返回NULL。-

无论何时调用
get_result()
mysqli_query()
都将收到一个
mysqli_result
对象。此对象包含从MySQL数据库服务器获取的数据。SQL中的数据以行的形式返回给PHP。
mysqli\u fetch\u 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>";
}
$query=“从类别中选择*”;
$result=$connection->query($query);
foreach($结果为$行){
$cat_id=$row['cat_id'];
$cat_title=$row['cat_title'];
echo$cat_id.“$cat_title.”
“; }
基本正确。Pro提示:您可以免费阅读大多数PHP函数的文档。使用该手册比过帐到堆栈溢出更快、更可靠。说明:“返回一个关联数组,该数组对应于获取的行,如果没有更多行,则返回NULL。”您是否尝试读取文档并尝试在每个循环中打印$row的内容?不太可能,我有时会在这些文档中迷失方向,我只是喜欢从人那里得到答案,因为我是一个新手。无论如何,谢谢@杰布兰查德,这本应该作为答案公布的,伊姆霍。(哈哈)。当然只是开玩笑;-)“while循环在行之间移动。”这不是真的。while循环只是反复调用相同的函数
mysqli\u fetch\u assoc()
通过每次调用下一行,在内部循环结果。