Mysqli查询没有拉出所有结果? [重复]

This question already has an answer here:

So I had some mysql code that I've begun to rewrite into mysqli and have run into a problem with the query, and that is when I execute it, I only receive one set of results instead of the several that I know it should be. This is the new code I am using and was wondering whether anyone had any ideas on where I'm going wrong?

code:

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

?>
</div>

you have to use a while loop

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 } ?>

try like this.

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 } ?>

you have to put a loop there.

you can replace this code and it will work

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

Fetch assoc retrieves one row as an associative array.

So you must use a while loop to keep fetching the rows until there are no more. The first example clearly illustrates how. I modified your whole code so you can copy paste everything. Do read the example though.

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