【问题标题】:Search users using meta key and meta values stored as comma separated in wordpress使用在 wordpress 中以逗号分隔的元键和元值搜索用户
【发布时间】:2015-05-29 13:55:00
【问题描述】:

在 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 表中的元值中搜索它,该表以逗号分隔并获取匹配的用户。

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: php mysql regex wordpress


    【解决方案1】:

    你可以使用FIND_IN_SET 所以:

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

    【讨论】:

      【解决方案2】:

      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),"
      

      【讨论】:

        猜你喜欢
        • 2019-05-14
        • 2018-12-08
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多