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