内部嵌套while循环在第二次迭代中为false


Inner nested while loop is false on second iteration

下面的代码创建html表数据。

第1行是正确的,返回带有$Row['LNAME']的column1,然后返回带有所有$row1['LNAME']结果的column2(共有四个)。

第2行及以后仅回显第1列和第2列中的一个空单元格。

while ($row = $sql->fetch_assoc()){
 echo "<tr>";
 echo "<td>";
 echo $row['LNAME'];
 echo "</td>";
 echo "<td>";
 while($row1 = $sql1->fetch_assoc()){
    echo $row1['NAME'] . "<br>";
    }
echo "</td>";
echo "</tr>";
 }

似乎在内部循环完成后,它在外部循环的未来迭代中评估为false,我希望它评估为true。

我应该更改什么以使内部循环在外部循环求值之前不会求值为false?

这是因为您已经到了$sql1的末尾。你可以再次寻找它的开头,但我更喜欢将从DB和迭代中提取数据分开,所以我会这样写(以你的代码为起点):

$lname = array();
while($row = $sql->fetch_assoc()){
    $lname[] = $row;
}
$name = array();
while($row1 = $sql1->fetch_assoc()){
    $name[] = $row1;
}

foreach($lname as $lvalue) {
    echo "<tr>";
    echo "<td>";
    echo $lvalue;
    echo "</td>";
    echo "<td>";
    foreach($name as $value) {
        echo $value . "<br>";
    }
    echo "</td>";
    echo "</tr>";
}

您需要使用mysql_data_seek($rs, 0)重置第一行的结果指针。这是在假设mysql隐藏在对象后面的情况下进行的。对于mysqli,分别使用mysqli_data_seek