PHP嵌套While循环只使用mysqli_fetch_array一次

时间:2017-10-23 12:05:40

标签: php mysql loops while-loop

在这个问题中有嵌套的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结果不同?

1 个答案:

答案 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>';
}