1

我有一个select option用户可以选择国家和州的地方。

用户可以选择“所有状态”选项:

<select>state</select>

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

查询:

WHERE country=:country && state=:state

如果我想搜索所有 state='' <-- search all 我应该给出什么值

4

3 回答 3

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);}

所以如果用户不选择或全选 - value=""; 该语句不会插入到 SQL 语句中

于 2013-07-15T02:08:42.910 回答
0

在 SQL 中,您通常会执行以下操作:

WHERE (:country is null or country=:country) and
      (:state is null or state=:state)
于 2013-07-15T01:37:08.560 回答
0

为了适应“搜索所有”功能,要么重写查询以不包含过滤器,要么替换value=value(始终为真)SQL。

否则,您可以注入自己的 SQL 并使用条件 WHERE 子句。

" ... WHERE 
        CASE WHEN '$state'='all' THEN TRUE
             ELSE state='$state'
             END
  ... "
于 2013-07-15T01:39:09.530 回答