MySQLi:在列中选择5个最常见的数据并按顺序返回以进行显示

时间:2019-02-01 00:06:22

标签: php mysqli prepared-statement

我正在尝试从名为favorite的表中名为users的列中选择5个最常用的单词。我只需要前5名,但希望他们以1到5的顺序返回显示。这些是名称,例如:

user1    Bob Marley
user2    Stan Smiley
user3    Bob Marley
user4    Joe Schmoe

等...

我将从以下内容开始:

$db_fav_query = mysqli_prepare($con, "SELECT favorite, COUNT(*) AS favCOUNT FROM users GROUP BY favorite ORDER BY favCOUNT DESC LIMIT 5");
$db_fav_query->execute();

$db_fav_result = $db_fav_query->get_result();
$row = $db_fav_result->fetch_assoc();

$fav1 = $row['favorite'];

我试图输出如下:

  <tr>
    <td><?php echo htmlentities($fav1); ?></td>
    <td><?php echo htmlentities($fav2); ?></td>
    <td><?php echo htmlentities($fav3); ?></td>
    <td><?php echo htmlentities($fav4); ?></td>
    <td><?php echo htmlentities($fav5); ?></td>
 </tr>

我意识到尚未声明$fav2$fav3等,但是不确定如何从dB中获取它们,因此可以对其进行分配。我没有收到任何错误,但是现在$fav1什么也没返回。

1 个答案:

答案 0 :(得分:2)

您需要一个while循环才能遍历所有行

while($row = $db_fav_result->fetch_assoc()) {
  $fav = $row['favorite'];
  echo $fav;
}

将它们放在桌子上

<tr>
<?php
while($row = $db_fav_result->fetch_assoc()) {
  $fav = $row['favorite'];
  echo "<td>$fav</td>";
}
?>
</tr>