私はデータベースを訪問者が行ったフィルタに従ってフィルタリングしようとしています。PHPフィルタを1つのSQLクエリに結合する
$query = "select * from Sheet1 where";
//filter query start
if (!empty($brand)) {
$branddata = implode("','", $brand);
//testing removing query
$query .= " Brand in('$branddata') and";
}
if (!empty($model)) {
$modeldata = implode("','", $model);
//testing removing query
$query .= " Model in('$modeldata') and";
}
/* if(!empty($model) && empty($brand)){
} */
if (!empty($spower) && !empty($epower)) {
$query .= " Power>='$spower' and Power<='$epower' and";
}
if (!empty($sprice) && !empty($eprice)) {
$query .= " Doors>='$sprice' and Doors<='$eprice'";
}
$rs = mysqli_query($conn, $query) or die("Error : " . mysqli_error($conn));
私が得たい結果は、動作し、正しい構文を持つSQLクエリです。訪問者が価格でフィルタリングしている場合、select * from Sheet1 where Doors>='$sprice' and Doors<='$eprice'
など。
現在のところ、私のコードは変数に特定の文字列を単に追加するように作られています。つまり、モデルでフィルタリングしないと、モデル変数が空であるためモデルをスキップします。問題は、電源でフィルタすると、SQLはselect * from Sheet1 where Power>='$spower' and Power<='$epower' and
になります。明らかにこれはうまくいきませんので、コードを作成する際に助けが必要なので、すべてのフィルタの組み合わせで動作するようにしてください。