私はプログラミングのアマチュアで、私の小さなプロジェクトで作業していますが、自分のmysql出力用のフィルタを作成したいときに窮地に陥っています。PHPとMYSQLを使用したフィルタ
すべての検索入力フィールドを入力して送信すると、すべて正常にフィルタリングされた結果が表示されます。しかし、私は1つのフィールドを残して何も表示されません(他のコマンドのみ)AND条件を使用しています。 ORを使用して空白のままにしておくと、必須フィールドに何が埋め込まれているかを気にせずにすべての結果が表示されます。
フィールドのいずれかが空の場合でも結果を表示する方法はありますか?私はここでstackoverflowで別のポストからコードを再生しようとしましたが、私は本当にあまり経験していないと私のコードの中でこれを使用する方法を見つけることができないように運がまだありません。ここでは以下
if(isset($_POST["profilename"]) && $_POST["profilename"] != "")
$sql .= " AND profilename = '". $_POST["profilename"] ."'";
あなたが見ていると私はフィルタリングが働いてしまうので、編集ができるかを提案することができれば、私のコードです。
<select class="form-control" id="Select1" name="departure">
<select class="form-control" id="Select2" name="destination">
<select class="form-control" id="Select3" name="layover">
...
<?php
include_once("connect.php");
if (isset($_GET['submit'])) {
$departure = mysqli_real_escape_string($connection, $_GET['departure']);
$destination = mysqli_real_escape_string($connection, $_GET['destination']);
$layover = mysqli_real_escape_string($connection, $_GET['layover']);
$result = mysqli_query($connection, "SELECT * FROM crud
WHERE departure LIKE '$departure%'
AND kam LIKE '$kam'
AND layover LIKE '$layover'
ORDER BY id DESC");
if($make = mysqli_num_rows($result) > 0){
while($r = mysqli_fetch_assoc($result)){
echo '<div style="display:block;"'.$r['departure'].'</div>';
echo '<div style="display:block;"'.$r['kam'].'</div>';
echo '<div style="display:block;"'.$r['layover'].'</div>';
//following code..
}
}else{
echo'<h4>No match found!</h4>';
print ($make);
}
mysqli_free_result($result);
mysqli_close($connection);
}
?>
例えば:Destination
でDeparture
を濾過し、Layover
空のままに - > ANY Layover
と希望Departure and Destination
の結果を返す必要があります。 または第2の例:Layover
でDestination
を入力しますが、Departure
を空白にすると、Destination and Layover
の検索がANY Departure
となります。
可能であれば、私のコードと可能であればどうすればいいのか教えてください。 本当にありがとう!このような
完璧な、この作品とソリューションは非常に簡単でした! :)私はSQLインジェクションに脆弱ではないので、私のコードで何を変えるべきかについて具体的な助言もありますか?私はそれを防ぐために私が何を変えることができるかわからない。どうもありがとう! –