[英]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.