如何统计数据库中所有帖子的帖子元关键字值

时间:2014-04-06 作者:John T

在我的帖子元数据中,每个帖子都有以下“键”:“image\\u details”,其典型值是一个数组,例如:

a:3:{s:23:"info_window_bg_image_id";s:3:"128";s:12:"colour_start";s:7:"#000000";s:10:"colour_end";s:7:"#b7b7b7";}
在上述示例中—info_window_bg_image_id 等于128

理想情况下,我想知道有多少帖子image_details[\'info_window_bg_image_id\'] 设置为128,但我会确定是否有任何帖子设置了该值。

我能想到的唯一方法(以我有限的知识)是:

检索数据库中每个帖子的数组

使用ID通过数组进行访问

使用get\\u post\\u meta(ID,Key)获取“image\\u details”键

检查结果的“info\\u window\\u bg\\u image\\u id”元素的值,查看其是否与值匹配。

这似乎是一个沉重的负担,因为我必须多次这样做才能检查其他值。

有没有更简单的方法?可能通过WP\\u query类进行直接SQL查询?

重申我的理想是得到一个结果,让我知道有:

有6篇文章的post\\u meta image\\u details“info\\u window\\u bg\\u image\\u id”设置为128,有10篇文章的post\\u meta image\\u details“info\\u window\\u bg\\u image\\u id”设置为127,等等

但我也很高兴看到这样一个结果:

128已使用,127已使用,126未使用等

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

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

没有可靠、高效、当然也不容易的SQL查询来搜索序列化数据。"serialization" is a PHP mechanism. It isn\'t SQL. To the database that is just a string. 您唯一的SQL选择是字符串上的正则表达式

  • WP_Query 当然不会这样做。该功能不是内置的,可能是因为上面列出的原因
  • 迭代数据大概是您给出的唯一解决方案,您正在处理的数据结构。

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

    结束

    相关推荐

    在unctions.php中运行MySQL代码后出现成功或错误消息

    就本文而言,假设有一段代码要在我的WordPress函数上运行。php文件。这是在我的数据库中删除mysql表的代码。例如,下面是代码:$wpdb->query( \" DELETE FROM $wpdb->posts WHERE anything = \'whocares\' \" ); 代码正常,但我想在运行代码后显示成功或失败的消息。我还有一个代码,显示运行后的成功消息,如下所示:function remove_contributors() {