2013-07-15 48 views
1

我有一個select option用戶可以選擇國家和州。更改選擇語句以在特定條件下返回所有行

用戶可以選擇 「全狀態」 選項:

<select>state</select> 

    search all value='' 
    CA value='CA' 
    NY value='NY' 

查詢:

WHERE country=:country && state=:state 

如果我想搜索所有狀態= '' <我應該給出什麼樣的價值 - 搜索所有

+2

這就是沒有有效的PHP或HTML,真不知道你問 – 2013-07-15 01:35:44

回答

2

謝謝你們,我有找到一個解決方案

if(isset($_GET['state']) && $_GET['state']!=""){ 
    $state=$_GET['state']; 
    $state_statement=" && state=:state"; 

}else{ 
    $state_statement=""; 
} 

WHERE country=:country".$state_statement." &&"; 


if(isset($_GET['state']) && $_GET['state']!=""){$SQL->bindValue(':state', $state, PDO::PARAM_STR);} 

因此,如果用戶沒有選擇或選擇所有 - 值= 「」;該聲明將不插入SQL語句

0

在SQL中,你通常會做這樣的事情:

WHERE (:country is null or country=:country) and 
     (:state is null or state=:state) 
+0

等什麼價值,我應該把裏面 user2178521

+0

好了,你可以使用任何你想要的值。如果是'''',那麼你會說':country =''。 。 .'或者你可以使用'all''或其他東西。 –

+0

so $ _GET ['search_all'] =「」; - > $狀態= NULL; ? – user2178521

0

要適應「全部搜索」功能,請重寫您的查詢以避免包含過濾器,或者替換爲value=value(始終爲true)的SQL。

否則,您可以注入自己的SQL並具有條件的WHERE子句。

" ... WHERE 
     CASE WHEN '$state'='all' THEN TRUE 
      ELSE state='$state' 
      END 
    ... "