我有一个select option
,用户可以选择国家和州。
用户可以选择“所有状态”选项:
<select>state</select>
search all value=''
CA value='CA'
NY value='NY'
查询:
WHERE country=:country && state=:state
如果我想搜索所有州=''&lt; - 搜索所有
,我应该给出什么价值答案 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
... "