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_key或者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 回答