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

PHP中GROUP_CONCAT结合GROUP_BY查询数据无法正常显示问题

问题分析与解决方案

嘿,这个问题其实是个很容易犯的小疏忽,我帮你捋清楚:

核心错误原因

你在SQL查询里用GROUP_CONCAT(start_date) as data把每个月份对应的所有start_date合并成了一个名为data的字段,但在后续的循环中,你仍然尝试调用$row['start_date']——这个字段在查询结果集里已经不存在了,因为你已经把它聚合到data字段里了,这就是为什么只有month能正常显示的原因。

修正后的代码

把循环里的$row['start_date']换成$row['data']就可以了,我还帮你优化了输出格式,让结果更易读:

function events_calendar() { 
    global $connection; 
    mysqli_select_db($connection); 
    $query = ("SELECT month, GROUP_CONCAT(start_date) as data FROM events GROUP BY month"); 
    $result = $connection->query($query); 
    $str = ""; 
    while ($row = $result->fetch_assoc()) { 
        echo "月份:" . $row['month']; 
        // 这里改成调用别名data
        echo "<br>对应的活动日期:" . $row['data'] . "<br><br>"; 
    } 
    return $str; 
}

额外小技巧

如果觉得默认的逗号分隔不够直观,你可以自定义GROUP_CONCAT的分隔符,比如用竖线或者换行符:

SELECT month, GROUP_CONCAT(start_date SEPARATOR ' | ') as data FROM events GROUP BY month

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:11:13