计数相同的元密钥的数量

时间:2012-07-19 作者:marctain

我想统计一篇文章中存在多少元键,因为每次特定的用户操作发生时,都会创建一个新的元键,其中包含一个日期。

我有这个,它没有返回任何东西(我正在寻找一个数字)。。。

        ...
$post_title = $row->post_title;
        $id = $row->ID;

$post_count = $wpdb->get_var("
                SELECT COUNT(DISTINCT $wpdb->postmeta.meta_key) FROM $wpdb->posts
                LEFT JOIN $wpdb->postmeta 
                WHERE $wpdb->posts.post_type = \'things\'
                AND $wpdb->postmeta.meta_key = \'dates\' 
                AND post_id = $id
                ");

        echo $post_title . \' (\' . $post_count . \')\' . "\\n";
    }
同样,我想计算一下与自定义帖子相关的元键总数,如果您对其中任何一个有任何帮助,我都将不胜感激!

3 个回复
SO网友:webtechie

您的数据存在结构性问题。如果需要搜索序列化数据的片段,则数据库中的序列化数据非常糟糕。

没有可靠、高效、当然也不容易的SQL查询来搜索序列化数据。“序列化”是一种PHP机制。它不是SQL。到数据库,这只是一个字符串。您唯一的SQL选择是字符串上的正则表达式。WP\\u Query肯定做不到这一点。该功能不是内置的,可能是因为上面列出的原因。对数据进行迭代大概是您给出了所处理的数据结构的唯一解决方案。

然而,在我看来,正确的解决方案是改变数据结构,以便在数据库中保存细粒度的数据。换句话说,对需要搜索的值使用许多不同的键。

SO网友:Emin Özlem

You can simply do : count( get_post_custom_keys($pid) )

SO网友:marctain

我通过更多的尝试和错误解决了这个问题:

这让我获得了具有正确id的post meta的#,

...
        $post_title = $row->post_title;
        $id = $row->ID;

$post_count = $wpdb->get_var("
                SELECT COUNT(*) FROM $wpdb->postmeta
                WHERE post_id = $id

结束

相关推荐

no emails for a user account

是否可以在没有电子邮件的情况下创建用户帐户。只是用户名?我看到有一个插件允许在一封电子邮件中包含多个作者。有人对其他方法有什么建议吗。我知道这并不理想,但我有一个用户谁将张贴代表多个用户。让用户通过gravatar为每个新作者验证他们的电子邮件是http://coffee2code.com/wp-plugins/allow-multiple-accounts/