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

如何使用PHP+MySQL统计recordData表中出现次数最多的timeLevelID

问题原因&修正方案

第一次SQL方案错误点&修正

你第一次查询失败的核心原因是SQL语法错误:

  • SELECT子句中timeLevelID与COUNT(timeLevelID)两个返回字段之间缺少逗号分隔,导致数据库解析SQL失败返回false,后续调用fetch_array方法自然抛出错误。
  • 额外注意:如果你使用的是PHP的mysqli扩展(当前主流用法),常量应为MYSQLI_ASSOC,你写的MYSQL_ASSOC是已废弃的mysql扩展的常量,也会导致报错。

修正后的完整代码如下:

require_once "dbConnect.php";
// 补充字段间的逗号,修正SQL语法
$allRecordsDataSQL = "SELECT timeLevelID, COUNT(timeLevelID) AS timeLevelIDFrequency FROM recordData GROUP BY timeLevelID ORDER BY timeLevelIDFrequency DESC";
$allRecordsData = $conn->query($allRecordsDataSQL);
// 调试时可保留这行打印SQL错误信息,方便后续排查问题
if ($conn->error) {
    echo "SQL错误:" . $conn->error;
    exit;
}
while($row = $allRecordsData->fetch_array(MYSQLI_ASSOC)){
    echo "关卡ID:" . $row["timeLevelID"] . " 游玩次数:" . $row["timeLevelIDFrequency"] . "<br>";
}

第二次PHP计数方案错误原因(可选参考)

第二次方案输出不符合预期是因为你使用了rsort()函数,该函数会重置数组的键名为数字索引,丢失原有关卡ID的关联关系,你需要改用arsort()函数,排序时保留原键名即可得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:04