内嵌式while循环在第二次迭代时为false

时间:2013-07-31 04:11:43

标签: php loops

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

第1行是正确的,并使用$ row ['LNAME']返回column1,然后使用所有$ row1 ['NAME']结果返回column2(有4个)。

第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。

我应该改变什么,以便内循环在外循环没有评估为假?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是因为你在$ sql1的末尾。您可以再次寻找它的开头,但我的偏好是将数据从数据库和迭代中分离出来,所以我会这样写(使用您的代码作为起点):

$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>";
}