You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按平均评分排序展示Top5数据库条目并显示评论数量?

解决方案

没问题,我来帮你调整代码实现按评分排序展示Top5条目的需求,同时还会修正你代码里的几处拼写小错误(比如表名itmes应该是items,字段itme_id应该是item_id,循环里的变量$itmes也写错了):

核心修改要点

  • 调整SQL语句,添加按评分降序排序和限制返回5条数据的逻辑
  • 修正代码里的拼写错误,避免运行时出现报错
  • 保留原有展示评论数量的逻辑,同时加了点安全优化

修正后的完整代码

<?php
// 修正SQL:按评分降序排序,只取前5条,同时修正表名和字段名的拼写
$sql = "SELECT item_id, name, description, rating, item_type, no_of_reviews FROM items 
        ORDER BY rating DESC 
        LIMIT 5"; 

// 执行查询,同时把连接对象传给mysqli_error,方便获取精准错误信息
$items = mysqli_query($con, $sql) or die(mysqli_error($con));

// 把html初始化移到循环外,避免每次循环重置内容
$html = "";
while($row = mysqli_fetch_array($items)) {
    if ($row['item_type'] == ITEM_HIDDEN) {
        continue;
    } 
    
    // 用htmlspecialchars转义输出内容,防止XSS注入风险
    $name = htmlspecialchars($row['name']);
    $description = htmlspecialchars($row['description']);
    $rating = $row['rating'];
    $reviewCount = $row['no_of_reviews'];
    
    $html .= "<tr><td>";
    $html .= "<h3>" . $name . "</h3>";
    $html .= "<p>" . $description . "</p>";
    $html .= "<b>Rating: " . $rating . "</b> ";
    $html .= "(Reviews: " . $reviewCount . ")";
    $html .= "</td></tr>";
}

echo $html;
?>

补充说明

  1. SQL逻辑:ORDER BY rating DESC会让评分最高的条目排在最前面,LIMIT 5确保只返回Top5的结果
  2. 安全优化:添加htmlspecialchars()转义用户输入的内容,避免恶意脚本被执行(基础的XSS防护)
  3. 错误处理:把mysqli_error()改成mysqli_error($con),能获取更精准的数据库错误信息,方便调试

内容的提问来源于stack exchange,提问作者phpseeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:57:27