2012-05-03 29 views
0

你好,我有一個搜索引擎爲我的網站。我有兩個選擇字段。我想舉一個例子:如何按範圍形成選擇查詢

input_a:3 input_b:5

所以查詢應該是這樣的:

if (($input_a == true) && ($input_b == false)){ 
     $filter_orders[] = " `col` LIKE '%$input_a%' "; 
    } 
    if (($input_a == false) && ($input_b == true)){ 
     $filter_orders[] = " `col` LIKE '%$input_b%' "; 
    } 
    if (($input_a == true) && ($input_b == true)){ 
     $filter_orders[] = " `col`= `col`>='%$input_a%' AND `col` = `col`<='%$input_b%' "; 

現在的問題是,我不知道,如果最後查詢不正確或不正確。這背後的邏輯將是,在我的例子中,應該找到3到5之間的範圍。

所以1,2 [3,4,5] 6,7,8 ......

,如果有一個人誰可以幫助我,我真的會升值。

非常感謝。

回答

1

NO,可悲的是一切,但正確的。它應該是這樣的。

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 
+0

好像是XYZ%只%的組合可與LIKE。所以我不得不離開這些,它的作品。非常感謝。 – bonny

2

這應該是

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 

編輯: 你可能想整個語句看起來像這樣:

if ((!empty($input_a) && is_int($input_a)) && (empty($input_b) || !is_int($input_b)) { 
    $filter_orders[] = " `col`='%$input_a%' "; 
} 
else if ((empty($input_b) || !is_int($input_a)) && (!empty($input_b) && is_int($input_b))) { 
    $filter_orders[] = " `col`='%$input_b%' "; 
} 
else if (!empty($input_a) && !empty($input_b) && is_int($input_a) && is_int($input_b)) { 
    $filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 
} 

插入else if,而不是僅僅if有助於確保其他if小號的arent執行如果發現前面的if是真的。

使用=代替LIKE WILLE確保3 == 3,而不是3 and 31 or 32