返回基于post_id的meta_value的SUM

时间:2012-06-16 20:22:06

标签: php select

我正在尝试显示表meta_valuepost_id相同的所有实例的postmeta(数字)之和。通过查看其他回复,以下似乎应该做什么,但我只是没有得到任何回报

<?php     
    global $wpdb;

    $data = $wpdb->query("
        SELECT SUM(meta_value)
        FROM $wpdb->postmeta
        WHERE `post_id` = $post_id
                ");
    echo $data;
  ?>

与其他答案相比,我无法弄清楚这有什么问题。有什么指针吗?

由于

4 个答案:

答案 0 :(得分:0)

嗯......您是否已连接到数据库?当你在一个字符串中包含对象属性时,将它们包含在大括号中是一种很好的形式,如下所示:

$data = $wpdb->query("SELECT SUM(meta_value)
                      FROM {$wpdb->postmeta}
                      WHERE `post_id` = $post_id
                     ");

答案 1 :(得分:0)

封装你的php变量,如果它们很复杂,那么:

FROM {$wpdb->postmeta}

答案 2 :(得分:0)

对于选择,您应该使用$wpdb->get_results()而不是$wpdb->query()

$wpdb->query()“...返回一个与受影响/选择的行数相对应的整数。”

http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

答案 3 :(得分:0)

好的,我已更改代码以反映上述内容,包括封装和使用get_results而不是query,但现在只需将'Array'作为返回结果。

        global $wpdb;

$data = $wpdb->get_results("
        SELECT SUM($wpdb->postmeta.meta_value)
        FROM {$wpdb->postmeta}
        WHERE `post_id` = the_id()
                ");
    echo $data;

我是否需要使用foreach()循环来循环生成的数组?我还检查了数据以及the_id()是否有效