0

我一直在寻找如何实现这一点,到目前为止还没有运气,我所拥有的是一个元值,其中有多个值并且是序列化的字符串格式,看起来像这样:

a:2:{s:15:"s2member_level2";b:1;s:26:"access_s2member_ccap_one_m";b:1;}

这个元值因用户而异,我需要做的是,获取包含在其中的所有值s2member_level2,这就是我得出的结果:

$wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_capabilities' AND meta_value = 's2member_level2' ");

我确实需要直接从数据库中获取,所以不能使用wordpress功能

有任何想法吗?提前致谢。

4

1 回答 1

0

这是您可以尝试的一种解决方法,它基本上在查询之外进行过滤。

1) 从 wp_usermeta 获取所有对 user_id,meta_value

 select user_id,meta_value from wp_usermeta where meta_key="wp_capabilities

2)在结果数组中,您可以搜索“s2member_level2”meta_values并获取相应的user_id。

3) 一旦你有了你需要的所有 user_ids,你就可以检索每个“wp_capabilities”值并反序列化它。

 select meta_value from wp_usermeta where meta_key="wp_capabilities" AND user_id="..."

看看反序列化函数: http: //php.net/manual/en/function.unserialize.php

于 2013-10-02T10:20:44.503 回答