【问题标题】:PHP MySQL multiple search query using option / select HTML form tags使用选项/选择 HTML 表单标签的 PHP MySQL 多重搜索查询
【发布时间】:2011-09-06 06:45:45
【问题描述】:

我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索。我不想拥有它,所以它是多个可选的搜索字段,例如if(isset($_POST['city']) || isset($_POST['name'])) 我不确定如何使用 HTML<select name=""><option value="">... 执行此操作,因为您无法为每个 <select> 字段定义名称。所以,首先......你如何制作一个 MySQL <select>search ,每个都会产生它自己的结果?那么,如何正确查询多个搜索选项?下面我使用的是“文本框”+<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 子句上做错了什么。我不完全确定如何正确执行&lt;option&gt; / &lt;select&gt; HTML 表单标签搜索查询。

【问题讨论】:

  • 你想做什么?您是在尝试使用来自 MySQL 的值填充您的 的值查找 MySQL 行?
  • MySQL-rows 基于来自多个

标签: php mysql html


【解决方案1】:

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);

【讨论】:

  • 这是否使结果基于
  • 1.只需仔细查看 HTML 部分。 2. var_dump() 此代码中的每个变量以查看其内容。 3. 思考
  • 你为什么使用喜欢的搜索位置是硬编码的城市名称,你的版本可以选择一些不需要的结果
【解决方案2】:

我不确定你想要什么,但试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    相关资源
    最近更新 更多