在这个问题中有嵌套的while循环。请检查代码01和代码02。
代码01
$sql2 ="select * from view";
$view_list = mysqli_query($con,$sql2); // Assume there are 5 items
$sql ="select * from apartment";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
while ($view_row = mysqli_fetch_array($view_list, MYSQLI_ASSOC)) {
$view_row['view_name']." , ";
}
<br>
}
结果:
A,B,C,
代码02
$sql ="select * from apartment";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$sql2 ="select * from view";
$view_list = mysqli_query($con,$sql2);
while ($view_row = mysqli_fetch_array($view_list, MYSQLI_ASSOC)) {
$view_row['view_name']." , "; //This loop works few times as expected
}
<br>
}
结果:
A,B,C,
A,B,C,
A,B,C,
A,B,C,
A,B,C,
我认为Code 01和Code 2都应该返回相同的输出....但是代码一个嵌套循环只能工作3次(这是第一个循环的循环。)
所以我想知道为什么代码01不能像我预期的那样工作?这意味着。为什么代码01和代码02结果不同?
答案 0 :(得分:0)
你必须用mysqli_data_seek左移动结果内部指针
对$ view_list做一段时间向前移动数组的内部指针。在第二个循环中,指针已经到了数组的末尾,因此脚本不会打印任何内容。你必须在orther中执行与mysqli_data_seek($view_list, 0)
类似的操作来重置指针
$sql2 ="select * from view";
$view_list = mysqli_query($con,$sql2); // Assume there are 5 items
$sql ="select * from apartment";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
mysqli_data_seek($view_list, 0)
while ($view_row = mysqli_fetch_array($view_list, MYSQLI_ASSOC)) {
$view_row['view_name']." , ";
}
echo '<br>';
}