我有一个select option
用户可以选择国家和州的地方。
用户可以选择“所有状态”选项:
<select>state</select>
search all value=''
CA value='CA'
NY value='NY'
查询:
WHERE country=:country && state=:state
如果我想搜索所有 state='' <-- search all 我应该给出什么值
谢谢各位,我已经找到解决办法了
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 语句中
在 SQL 中,您通常会执行以下操作:
WHERE (:country is null or country=:country) and
(:state is null or state=:state)
为了适应“搜索所有”功能,要么重写查询以不包含过滤器,要么替换value=value
(始终为真)SQL。
否则,您可以注入自己的 SQL 并使用条件 WHERE 子句。
" ... WHERE
CASE WHEN '$state'='all' THEN TRUE
ELSE state='$state'
END
... "