我正在尝试根据搜索表单的输入创建一个具有多个条件的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."'))");
请帮我在上述查询中找到错误。