为什么第二个示例与第一个示例的工作方式不同? 看看循环的条件。是不是只有不同的写作条件?
当没有更多内容可用时,第一个例子变为false。然后它停止了。 但是第二个例子永远不会变错,它会不断地在屏幕上显示结果并且永远不会完成。无尽的循环。
为什么示例的行为不同而且不完全相同?
//First ex
while ($rows = mysqli_fetch_assoc($query)) {
print_r($rows);
}
//second ex
$rows = mysqli_fetch_assoc($query);
while ($rows) {
print_r($rows);
}
答案 0 :(得分:0)
第一个将在每个循环中获取mysql数据。因为条件检查中的语句将运行每个检查。第二个只运行一次。
答案 1 :(得分:0)
第二个while语句在while(condition){}
内没有条件,现在你刚刚声明了一个变量。因此它不会以与第一个语句相同的方式执行。
答案 2 :(得分:0)
//First ex
while ($rows = mysqli_fetch_assoc($query)) {
print_r($rows);
}
这是在每次迭代时执行的,因此在每次迭代时将下一个值放在$row
内。
//second ex
$rows = mysqli_fetch_assoc($query);
while ($rows) {
print_r($rows);
}
在上面的代码中,您只将第一个迭代值放到$row
。 $row
未在每次迭代时获得更新。所以这将永远运行。
结论:
每次拨打
mysqli_fetch_assoc($query)
时,都会给出下一行。
在第一个示例中,$ row在每次迭代时通过在每次迭代时再次调用mysqli_fetch_assoc($query)
来获得下一行。
而在第二个示例中,mysqli_fetch_assoc($query)
仅被调用一次。因此,每次运行时$row
都会有价值,所以它会运行无限时间。
答案 3 :(得分:0)
//mysql users table
//id | nick | date
//1 | x1 | 2018-01-05
//2 | x2 | 2018-01-06
//3 | x3 | 2018-01-07
while ($row = mysqli_fetch_assoc($query)) {
print_r($row);
}
//first loop call row one
//second loop call row two
//third loop call row three
print_r(mysqli_fetch_assoc($query)); //print row one and mysql cursor jump to row two
print_r(mysqli_fetch_assoc($query)); //print row two and mysql cursor jump to row there
print_r(mysqli_fetch_assoc($query)); //print row there
//but mysqli_fetch_assoc bring one row not rows
$row = mysqli_fetch_assoc($query);
//row is null, no print and repeat
//row is null, no print and repeat
//row is null, no print and repeat
//row is null, no print and repeat
// ∞ :))
while ($row) {
print_r($row);
}