簡體   English   中英

PHP MySQL多重搜索查詢,使用選項/選擇HTML表單標簽

[英]PHP MySQL multiple search query using option / select HTML form tags

我正在嘗試使用兩個搜索字段設置基本的MySQL LIKE搜索。 我不想要它,所以它是多個可選的搜索字段,例如if(isset($_POST['city']) || isset($_POST['name']))我不確定如何使用HTML <select name=""><option value="">... ,因為您無法為每個<select>字段定義名稱。 那么,首先...如何進行MySQL <select>搜索,每個查詢都會產生自己的結果? 然后,如何正確查詢多個搜索選項? 在下面,我使用的是“文本框” + <select>搜索。

            <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'])."%'";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM