嗨,我有一个下拉菜单,它将值填入搜索表单。有两个搜索标准。物业类别&财产子类别。当两者都选中时,搜索效果很好。物业类别有五个选项:空白,住宅,商业,工业,农业..我想构造查询,所以如果属性类别中的值为空白,它应显示与住宅,商业,工业和农业相匹配的所有结果。目前将其留空不会给出答案。字段为空时返回所有结果
我已经尝试了两种方式,使用数组,然后构建在MySQL阵列..但问题是如何在一个数组或MySQL中的变量搜索...
以下是HTML表单
<select class="searchpropertyinputs" name="property_category" id="property_category" onchange="subcategory('property_category', 'property_subcategory');">
<option value="">Property Type</option>
<option value="Residential">Residential</option>
<option value="Commercial">Commercial</option>
<option value="Industrial">Industrial</option>
<option value="Agricultural">Agricultural</option>
</select>
</br>
<select class="searchpropertyinputs" name="property_subcategory" id="property_subcategory">
<option value="">Property Subtype</option>
</select>
</br>
PHP
$property_category = ($_GET['property_category']);
$select = $con->prepare("SELECT * FROM tbl_property WHERE (property_category='$property_category' AND property_subcategory='$property_subcategory') LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
我尝试做以下,但问题是,如果选择值它是一个变量,否则,如果它是空白的,然后它是一个数组..他NCE结构查询是一个问题
if ($property_category == ""){
$myarray[1] = "'Residential'";
$myarray[2] = "'Commercial'";
$myarray[3] = "'Industrial'";
$myarray[4] = "'Agricultural'";
$property_category = implode(", ", $myarray);
}
$select = $con->prepare("SELECT * FROM tbl_property WHERE property_category IN ($property_category) LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();
期望的结果是做基于用户输入的搜索,但如果用户不选择任何东西(空值),然后给所有存在于列中的结果。
这是行不通的,这是给没有结果
$select = $con->prepare(
"SELECT * FROM tbl_property
WHERE property_category LIKE
CASE WHEN '$property_category' = ''
THEN '%'
ELSE '$property_category'
END CASE
LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();
所以,从本质上讲,你不想让'WHERE'条款时,不会选择这两个下拉菜单,对不对? – BizzyBob
是的,我正在考虑在查询内部放置一条if语句,以便在property_category上只有当它有一个值时才进行搜索 – DragonFire
听起来像是一个好主意.. – BizzyBob