嵌套while循环不按预期循环

时间:2012-04-24 06:50:14

标签: php loops

我在循环第二个循环时遇到问题。它只会循环一次。所以我只能得到第二个循环的第一行的值。请帮我解决这个问题,我是初学者。

<ul id="navbar">

     <?php
     $rel = "SELECT * FROM table1 ORDER BY category";
     $sql=$db->query($rel); 
     while($row = $sql -> fetch_array()){
     ?>

     <li><a href="category.php?id=<?php echo $row['category_id'];?>"><?php echo $row['category'];?></a> 

        <ul>

            <?php
            $sel = "SELECT * FROM table2 WHERE category_id=".$row['category_id']." ORDER BY subcategory ASC";
            $sql=$db->query($sel);  
            while($row1 = $sql -> fetch_array()){
            ?>

            <li><a href="subcategory.php?id=<?php echo $row1['subcategory_id'];?>"><?php echo $row1['subcategory'];?></a></li>

            <?php }?>

        </ul>
    </li>

    <?php }?>

</ul>

3 个答案:

答案 0 :(得分:3)

您正在覆盖内循环$sql,使外循环无效。在第二个查询中为SQL结果标识符使用另一个变量名。

答案 1 :(得分:2)

嗯,您将第一个查询的结果保留在变量$sql

$sql=$db->query($rel); 

但是,在第二个循环之前,你会覆盖该变量。

$sql=$db->query($sel);  

尝试为第二次使用声明一个新变量。说,$sql2

答案 2 :(得分:1)

这样做的原因是您对两个查询都使用变量$sql。例如,将第二个重命名为$sql2

另外,请避免使用这么多<?php ?>个标签。