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

如何在WordPress页面展示MySQL表列求和值?已遇代码问题

问题分析与解决方案

嘿,我找到你代码的问题啦!

问题根源

你用$wpdb->get_results()获取查询结果时,它默认返回的是对象数组,而不是你以为的关联数组。所以$result_good['good_points']这种数组键的访问方式根本取不到值,自然只会显示前面的文字,后面的数值为空。

修正方案

这里有两种简单的修正方式,选哪种都可以:

方式一:改用get_row()获取单行结果

因为你的SQL查询只返回一行汇总数据,用get_row()更合适,它可以直接返回单个对象(或关联数组):

function sum_good() {
    global $wpdb;
    // 用get_row获取单行结果,指定ARRAY_A参数返回关联数组
    $result_good = $wpdb->get_row("SELECT SUM(points) AS good_points FROM mytable WHERE category='Good'", ARRAY_A);
    $haha = "Total Points for Good = " . $result_good['good_points'];
    return $haha;
}
add_shortcode('sumgood', 'sum_good');

// 同理处理Bad类别的短代码
function sum_bad() {
    global $wpdb;
    $result_bad = $wpdb->get_row("SELECT SUM(points) AS bad_points FROM mytable WHERE category='Bad'", ARRAY_A);
    $haha = "Total Points for Bad = " . $result_bad['bad_points'];
    return $haha;
}
add_shortcode('sumbad', 'sum_bad');

方式二:如果坚持用get_results(),要访问对象属性

get_results()返回的是对象数组,你需要先取数组的第一个元素,再访问它的属性:

function sum_good() {
    global $wpdb;
    $result_good = $wpdb->get_results("SELECT SUM(points) AS good_points FROM mytable WHERE category='Good'");
    // 取数组第一个对象,访问其good_points属性
    $haha = "Total Points for Good = " . $result_good[0]->good_points;
    return $haha;
}
add_shortcode('sumgood', 'sum_good');

使用方法

把修正后的代码添加到你的主题(或子主题)的functions.php文件里,然后在WordPress页面或文章中直接插入短代码:

  • 显示Good类别总分:[sumgood]
  • 显示Bad类别总分:[sumbad]

额外小提示

如果以后你的查询需要用到动态参数(比如用户输入的类别),一定要用$wpdb->prepare()来防止SQL注入,示例代码如下:

$category = 'Good';
$query = $wpdb->prepare("SELECT SUM(points) AS total FROM mytable WHERE category=%s", $category);
$result = $wpdb->get_row($query, ARRAY_A);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:23:48