$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 表单标签搜索查询。
$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'])."%'";
}