Mysqli查询没有拉出所有结果?

时间:2017-12-14 10:42:36

标签: php mysql mysqli

所以我有一些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);

?>

4 个答案:

答案 0 :(得分: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 } ?>

答案 1 :(得分:0)

尝试这样。

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 :(得分:0)

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

您可以替换此代码,它可以正常工作

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();
}
 ?>

答案 3 :(得分:0)

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);