2

WP Custom Fields に基づくコンペを開催しています。特定のユーザーの meta_key='odd' のすべてのメタ値をカウントしようとしています。以下の式を使用していますが、結果が返されません。

$meta_key = 'odd';
$post_author = 'Admin';
$odd = $wpdb->get_var( $wpdb->prepare(
    "
    SELECT Count(meta_value)
    FROM $wpdb->postmeta
    INNER JOIN $wpdb->posts ON $wpdb->postmeta->post_id = $wpdb->posts->ID
    WHERE $wpdb->postmeta->meta_key = 'odd' AND $wpdb->posts->post_author = 'Admin'
    ",
    $meta_key, $post_author
) );
echo "<p>Total odd {$odd}</p>";

誰でも私を助けることができますか?前もって感謝します。

4

1 に答える 1

4

$wpdb変数と変数を混同してい$postますJOIN。たとえば、 の場合、 は使用できません。テーブル エイリアスを使用する方がよいでしょう$wpdb->postmeta->post_id{$wpdb->postmeta}.post_idあなたprepare()もあなたのmeta_keyorを渡しauthorていません。%sそれらのプレースホルダーがないからです

$odd = $wpdb->get_var( $wpdb->prepare(
    "
    SELECT count(meta_value)
    FROM {$wpdb->postmeta} pm
    INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID
    WHERE pm.meta_key = %s AND p.post_author = %s
    ",
    $meta_key, $post_author
) );
于 2012-11-05T16:24:37.537 に答える