更改select语句以在特定条件下返回所有行

时间:2013-07-15 01:34:16

标签: php mysql

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

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

<select>state</select>

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

查询:

WHERE country=:country && state=:state

如果我想搜索所有州=''&lt; - 搜索所有

,我应该给出什么价值

3 个答案:

答案 0 :(得分: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语句

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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