1

我正在尝试查询 $wpdb 以获取自定义表中已记录超过设定目标的志愿工作小时数的用户数量的 int 值 - 这些时间需要经过审核(值设置为 = 1 ) - 到目前为止我有这个:

编辑- 更新为在查询中围绕 php 变量使用一致的 {} -

$target = get_post_meta($post->ID, 'target', true) ? (int)get_post_meta($post->ID, 'target', true) : 100;

$awards = $wpdb->get_var("
    SELECT user_id 
    FROM {$this->options['rewards_logging']} 
    WHERE moderated = 1 AND reward_id = {$post->ID} 
    GROUP BY user_id 
    HAVING sum(hours) > {$target}
");

如果没有一个小时数被批准(modeded = 0),则返回正确的“0”值,但是一旦这些用户小时数被批准,此查询就会返回所有登录时间超过目标的用户的计数小时(无论是否被批准)。

任何指针!

干杯

射线

4

1 回答 1

1

似乎我试图使用 $wpdb->get_var 取回单个变量,而我真的需要整个结果集:

$awards = $wpdb->get_results("
     SELECT user_id
     FROM {$this->options['rewards_logging']} 
     WHERE moderated = 1 AND reward_id = {$post->ID} 
     GROUP BY user_id
     HAVING sum(hours) > {$target}
");

然后我可以检查数据并显示结果 - 等等......:

if ( count($awards) > 0 ) {

     #var_dump($awards);
     echo '<span class="awards-notice">'.count($awards).'</span>';
} else {
     echo '-';
}
于 2013-09-30T11:23:46.553 回答