2012-04-24 67 views
0

我有问题循环第二while Loop.It只会循环一次。因此我只能得到第二个循环的第一行的值。请帮我弄清楚,我是初学者。嵌套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> 

回答

3

你们是内环覆盖$sql,对于外一个无效的。在第二个查询中使用另一个变量名作为SQL结果标识符。

+0

谢谢。这真的很有用....现在工作正常... :-) – 2012-04-24 07:00:42

2

那么,你是保持第一查询结果的变量$sql

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

但随后,第二个循环之前,您覆盖该变量。

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

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

+0

谢谢你看看我的代码并帮助我...这真的有帮助 – 2012-04-24 07:01:45

1

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

此外,请避免使用如此多的<?php ?>标签。

+0

谢谢,我会做一个笔记那...这真的很有帮助。感谢您查看我的代码。 – 2012-04-24 07:02:59