0

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

<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>
4

3 回答 3

3

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

于 2012-04-24T06:53:51.667 回答
2

好吧,您将第一个查询的结果保存在变量中$sql

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

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

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

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

于 2012-04-24T06:54:13.690 回答
1

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

另外,避免使用太多<?php ?>标签。

于 2012-04-24T06:55:22.477 回答