Многопользовательский поисковый запрос PHP MySQL с использованием опции / выбора тегов HTML-формы

Я пытаюсь настроить базовый поиск MySQL LIKE, используя два поля поиска. Я не хочу иметь это, так что это несколько необязательных полей поиска, например if(isset($_POST['city']) || isset($_POST['name'])) Я не уверен, как это сделать с помощью HTML <select name=""><option value="">... видя, поскольку вы не можете определить имя для каждого поля <select> . Итак, сначала … Как вы создаете MySQL <select> search, где каждый дает свой собственный результат? Затем, как правильно запросить несколько вариантов поиска? Ниже я использую «текстовое поле» + <select> search.

  <input type="text" name="type" /> <select name="location"> <option value="Chicago">Chicago</option> <option value="New York">New York</option> </select> <input type="submit" value="Search" /> 

MySQL:

  $query = "SELECT name, type, description, location, zip_code, phone_number FROM search WHERE type LIKE '%$type%' OR location LIKE 'Chicago' OR location LIKE 'New York' "; 

Я знаю, что я делаю что-то неправильно в предложениях OR. Я не совсем уверен, как правильно выполнить поисковый запрос тега <option> / <select> HTML-формы.

HTML

 <select multiple name="location[]" size="2"> 

PHP

 $w = array(); $where = ''; foreach ($_POST['location'] as $loc){ $loc = mysql_real_escape_string($loc); $w[] = "location = '$loc'"; } if (!empty($_POST['type'])){ $w[] = "type LIKE '%".mysql_real_escape_string($_POST['type'])."%'"; } if ($w) $where = implode(' OR ',$w); 

Я не уверен, что вы хотите, но попробуйте это:

PHP:

 // mysql escape $locations = array_map("mysql_real_escape_string", $_POST['location']); // add locations to query string $locations = implode("','",$location); $query = "SELECT name, type, description, location, zip_code, phone_number FROM search WHERE location IN ('$locations') "; if (isset($_POST['type']) && !empty($_POST['type'])){ $query .= " or type LIKE '%".mysql_real_escape_string($_POST['type'])."%'"; }