gpt4 book ai didi

php - 用 while() 或 foreach() 查询显示结果

转载 作者:行者123 更新时间:2023-12-02 16:23:10 26 4
gpt4 key购买 nike

我正在弄乱如何从 MySQL 进行查询并在 PHP 上显示它们,我偶然发现了一些东西:

这是我要查询的表:
This is the table im doing the query to

$query = mysqli_query($conexion, "SELECT * FROM notas");

while($nota = mysqli_fetch_assoc($query)){
var_dump($nota);
echo $nota["Descripcion"];
}

每当我使用 while() 来显示查询的所有结果时,它都有效。该表有 2 行,并且都显示了。

var_dump($notas) 的结果:
Result of the var_dump($notas)

但是每当我使用 foreach() 时,它只会返回查询的最后结果。

$query = mysqli_query($conexion, "SELECT * FROM notas");

foreach(mysqli_fetch_assoc($query) as $valor){
var_dump($valor);
}

var_dump($valor) 的结果:
Result of the var_dump($valor)

有什么原因吗?我在 foreach() 循环中做错了什么?我真的不知道。我只想说“捏造它”,接受它并且只使用 while 循环来显示查询,但是,你知道,想知道我是做错了什么还是不理解。

最佳答案

第二个版本循环遍历列,而不是行。它相当于:

$row = mysqli_fetch_assoc($query);
foreach ($row as $valor) {
var_dump($valor);
}

你可以在这里看到它只是获取一行,这是一个关联数组,然后遍历该数组的元素。

foreach (<expression> as <variable>)不会在每次循环时都重新计算表达式。它执行一次,保存该数组,然后遍历数组元素。

mysqli_result对象是可迭代的,所以你可以这样做:

foreach($query as $valor) {
var_dump($valor);
}

您也可以调用mysqli_fetch_all($query) ,它将返回所有结果的二维数组,然后循环遍历它。但是如果查询返回很多结果,这将使用大量内存。

关于php - 用 while() 或 foreach() 查询显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65114134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com