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}
");

どの時間も承認されていない (moded = 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 に答える