嗨,我有一個下拉菜單,它將值填入搜索表單。有兩個搜索標準。物業類別&財產子類別。當兩者都選中時,搜索效果很好。物業類別有五個選項:空白,住宅,商業,工業,農業..我想構造查詢,所以如果屬性類別中的值爲空白,它應顯示與住宅,商業,工業和農業相匹配的所有結果。目前將其留空不會給出答案。字段爲空時返回所有結果
我已經嘗試了兩種方式,使用數組,然後構建在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