基于多个条件从WordPress中选择用户

时间:2013-07-18 06:50:57

标签: sql wordpress where

我正在尝试根据搜索表单的输入创建一个具有多个条件的SQL WHERE查询来查找用户。当表单中只选择一个字段时,每个输入都起作用。当提交两个或多个输入字段的组合时,它不会给出任何结果。

请注意,此处的两个选项仅供参考。我有更多的选择被使用。因此,有必要单独搜索每个选项。

以下是代码:

    global $wpdb;

        $user_ids = array();
        $user_query = null;

        if (isset($_REQUEST['search']) && !empty($_REQUEST['search']) ) {
            $s = $_REQUEST['search'];
            $user_query .= "((meta_key='first_name' AND meta_value LIKE '%".$s."%') OR (meta_key='last_name' AND meta_value LIKE '%".$s."%') OR (meta_key='display_name' AND meta_value LIKE '%".$s."%') OR (meta_key='nice_name' AND meta_value LIKE '%".$s."%'))";
        }

        if (isset($_REQUEST['email']) && !empty($_REQUEST['email']) ) {
            $s = $_REQUEST['email'];
            if ($user_query) {
            $user_query .= "AND (meta_key='user_email' AND meta_value='".$s."')";
            } else {
            $user_query .= "(meta_key='user_email' AND meta_value='".$s."')";
            }
        }


        if (!empty($user_query)) {
            $wp_users = $wpdb->get_results("SELECT user_id FROM $wpdb->usermeta JOIN $wpdb->users ON $wpdb->usermeta.user_id=$wpdb->users.ID WHERE ($user_query)");
        }

这是应该执行的SQL查询:

$wp_users = $wpdb->get_results("SELECT user_id FROM $wpdb->usermeta JOIN $wpdb->users ON $wpdb->usermeta.user_id=$wpdb->users.ID WHERE (((meta_key='first_name' AND meta_value LIKE '%".$s."%') OR (meta_key='last_name' AND meta_value LIKE '%".$s."%') OR (meta_key='display_name' AND meta_value LIKE '%".$s."%') OR (meta_key='nice_name' AND meta_value LIKE '%".$s."%')) AND (meta_key='user_email' AND meta_value='".$s."'))");

请帮我在上述查询中找到错误。

1 个答案:

答案 0 :(得分:0)

试试WP_User_Query。使这些查询更容易。有很好的文档。