【问题标题】:Mysqli Query not pulling all results? [duplicate]Mysqli Query 没有提取所有结果? [复制]
【发布时间】:2018-05-28 10:13:10
【问题描述】:

所以我有一些 mysql 代码我已经开始重写为 mysqli 并且遇到了查询问题,即当我执行它时,我只收到一组结果而不是我知道应该是几个。这是我正在使用的新代码,想知道是否有人对我哪里出错有任何想法?

代码:

<?php

if ($result = $link->query("SELECT SUM(step_count.steps) as total, leagues.league_id, leagues.league_name
        FROM step_count INNER JOIN logins on step_count.unique_id = logins.unique_id INNER JOIN leagues ON leagues.unique_id = logins.unique_id GROUP BY leagues.league_id, leagues.league_name ORDER BY `total`
        DESC LIMIT 100 ", MYSQLI_USE_RESULT))
        $rank = 1; {

            $row = $result->fetch_assoc();
            $result->close();

        }

?>

<tr>
    <td>
        <?php echo $rank++; ?>
    </td>
    <td>
        <?php echo $row['league_name']; ?>
    </td>
    <td>
        <?php echo $row['total']; ?>
    </td>
</tr>

</table>

<?php

mysqli_close($link);

?>

【问题讨论】:

  • 你没有循环结构,是的,它只会返回第一行。

标签: php mysql mysqli


【解决方案1】:

你必须使用一个while循环

while($row = $result->fetch_assoc()){ ?>
   <tr>
    <td><?php echo $rank++; ?></td>
    <td><?php echo $row['league_name']; ?></td>
    <td><?php echo $row['total']; ?></td>
   </tr>
  <?php } ?>

【讨论】:

    【解决方案2】:

    像这样试试。

    while($row =  $result->fetch_assoc()){ ?>
    <tr>
     <td><?php echo $rank++; ?></td>
     <td><?php echo $row->league_name; ?></td>
     <td><?php echo $row->total; ?></td>
     </tr>
    <?php } ?>
    

    【讨论】:

    • 你为什么要使用 $row 两次。它应该只写几次。
    • @SushankPokharel 我已经修改了它......这是错误的
    【解决方案3】:

    你必须在那里放一个循环。

    你可以替换这段代码,它会工作

    while($row =$result->fetch_assoc()){
        ?>
    
              <tr>
              <td><?php echo $rank++; ?></td>
              <td><?php echo $row['league_name']; ?></td>
              <td><?php echo $row['total']; ?></td>
            </tr>
    
        <?php } 
         $result->close();
    }
     ?>
    

    【讨论】:

      【解决方案4】:

      Fetch assoc 检索一行作为关联数组。

      因此,您必须使用 while 循环来继续获取行,直到没有更多行为止。 first example 清楚地说明了如何。我修改了您的整个代码,以便您可以复制粘贴所有内容。不过请阅读示例。

      <?php  
      $query = "SELECT SUM(step_count.steps) as total, 
      leagues.league_id, leagues.league_name
      FROM step_count
      INNER JOIN logins on
      step_count.unique_id=logins.unique_id
      INNER JOIN leagues ON
      leagues.unique_id=logins.unique_id
      GROUP BY leagues.league_id, leagues.league_name
      ORDER BY `total` DESC LIMIT 100";
      
      $rank = 1;
      if ($result = $link->query($query, MYSQLI_USE_RESULT)) {
      
          while($row =$result->fetch_assoc()){
          ?>
      
              <tr>
                 <td><?php echo $rank++; ?></td>
                 <td><?php echo $row['league_name']; ?></td>
                 <td><?php echo $row['total']; ?></td>
             </tr>     
             <?php
         }?>
         </table>
         <?php
      }
      mysqli_close($link);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        相关资源
        最近更新 更多