ユーザーがselect option
国と州を選択できる場所があります。
ユーザーは「すべての状態」オプションを選択できます。
<select>state</select>
search all value=''
CA value='CA'
NY value='NY'
クエリ:
WHERE country=:country && state=:state
すべてを検索したい場合、どの値を指定すればよいですか? state='' <- すべてを検索
みんなありがとう、私は解決策を見つけました
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 を (常に true に) 置き換えます。
それ以外の場合は、独自の SQL を挿入して、条件付きの WHERE 句を使用できます。
" ... WHERE
CASE WHEN '$state'='all' THEN TRUE
ELSE state='$state'
END
... "