dongqi8114 2012-05-20 09:34
浏览 11
已采纳

而在里面虽然PHP

We're trying to put a while inside a while loop. The first while is run through and the results are displayed in a list (139, 140, 141). The list for the second while only displays one value (1ste troop). These are the results:
139
1ste troop
140
141

So it seems that the second while is only executed once. What can I do to fix this?

echo "<ul>";            
            while($user = $allUsersintroops->fetch_assoc())
            {

                if($user['userid'] == $_SESSION['userid'])
                {   
                    echo "<li>" . $user['troopid'].  " </li>";

                    while ($mytroops = $alltroops->fetch_assoc()) 
                    {
                        if($user['troopid'] == $mytroops['troopid'])
                        {
                            echo "<li>" . $mytroops['description'].  " </li>";
                        }
                    }
                }   
            }           
echo "</ul>";
  • 写回答

1条回答 默认 最新

  • douan3019 2012-05-20 09:44
    关注

    The inner loop stops once fetch_assoc returns false... but that indicates the end of all found results and it doesn't have any rows left for the next iteration.

    You should collect all the rows from $alltroops into an array once, then iterate over that:

    echo "<ul>";
    $allTroopsList = array();
    while ($mytroops = $alltroops->fetch_assoc()) {
      $allTroopsList []= $mytroops;
    }
    while($user = $allUsersintroops->fetch_assoc()) {
      if($user['userid'] == $_SESSION['userid']) {   
        echo "<li>" . $user['troopid'].  " </li>";
    
        foreach($allTroopsList as $mytroops) {
          if($user['troopid'] == $mytroops['troopid']) {
            echo "<li>" . $mytroops['description'].  " </li>";
          }
        }
      }   
    }           
    echo "</ul>";
    

    Additionally, you should consider adding some filtering to your $allUsersintroops query, because you are only using a part of the the returned rows, which means the rest of the rows are sent from the DB to your code for no reason, wasting time and bandwidth.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据