数据库中的序列化数组是否可以与具有META_QUERY的序列化数组进行匹配?

时间:2011-08-15 作者:Doggie52

假设我有一个与以序列化形式存储在数据库中的帖子(自定义字段)关联的复选框选择数组。在我的网站上,我为用户提供相同的复选框,让他们根据自己的选择“过滤”帖子。如果只有一个选项与帖子选项匹配,则应显示该帖子。

$args[\'meta_query\'] = array(
  array(
    \'key\' => \'choices\',
    \'value\' => $_POST[\'choices\'],
    \'compare\' => \'IN\',
));
由于数据库中的数据是序列化的,我希望WP\\u查询足够聪明,能够理解在尝试匹配之前需要先取消数据库中序列化数据的序列化。事实并非如此,我正在考虑将其提交给WP Trac,看看是否可以将其作为功能添加到未来的版本中。

我的问题是,除了以另一种方式存储数据之外,我是否还有其他选择(目前这似乎很难,因为我正在使用插件高级自定义字段来存储数据)。我看了一遍meta_query with meta values as serialize arrays, 那里的答案指引我以另一种方式存储数据。我希望我能避免这种情况。

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

一个脏选项正在使用LIKE 元查询请求中的比较。它只会将序列化值视为字符串,以使子字符串与之匹配。这不是我第一次(或第二次)依赖的方法,但在某些情况下,我不得不这样做。

非唯一元键的使用有点棘手,但它们是存储您想要查询的内容的更好方法。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post