使用在wordpress中以逗号分隔的元键和元值搜索用户

时间:2015-05-29 13:55:01

标签: php mysql regex wordpress

在wordpress中创建用户时,有一个复选框列表,我将复选框的id值存储为用户元表中的逗号分隔,如1,5,6,8,10。等。

| user_id |  meta_key   | meta_value |
---------------------------------
|       1 |   service   |  1,4,5,10  |
|       2 |   service   |  4,5,6     |

现在我正在开发搜索功能以及名字和城市,我必须获得用户列表。

因此,创建用户时会出现相同的复选框列表。在这里,我必须获取选中的值并在usermeta表中的元值中搜索它,该值以逗号分隔存储并获取匹配的用户。

示例:元键是专业,存储的值是user_1 1,4,5,10,user_2是4,5,6。

现在,如果从搜索1,4值中选中,那么它应该返回用户。 在这种情况下,它应该返回user1和user2。

如果我搜索1,10被选中,它将只返回user1。

目前我正在执行自定义查询以获取用户。

请帮助我将值与逗号分隔的元值进行匹配以获取用户。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用FIND_IN_SET所以:

SELECT * FROM your_table 
WHERE FIND_IN_SET(1, meta_value) AND FIND_IN_SET(4, meta_value);

答案 1 :(得分:0)

FIND_IN_SET一次只能搜索一个字符串。

您可以使用此查询来查找用户

SELECT
  wp_users.*
FROM wp_users
  JOIN wp_usermeta
    ON wp_users.id = wp_usermeta.user_id
      AND wp_usermeta.meta_key = 'service'

     WHERE CONCAT(",", wp_usermeta.meta_value, ",") REGEXP ",(1|4),"