我是一名編程愛好者,在我的一個小項目上工作,但當我想爲我的mysql輸出生成過濾器時,我被困住了。使用PHP和MYSQL進行過濾
所有的作品時,我填寫的所有搜索輸入字段和提交,出現正確的過濾結果。但是當我離開一個領域時什麼也沒有顯示(只有其他命令),因爲使用AND條件。如果我使用OR並將其保留爲空,它會顯示所有結果而不關心填寫在必填字段中的內容。
會不會有什麼辦法如何顯示,即使其中一個字段保持爲空的結果?我試圖在不同的帖子中使用不同的帖子,但沒有運氣,因爲我沒有很多經驗,也不知道如何在代碼中使用這個。
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);
}
?>
例如:過濾Departure
與Destination
離開Layover
空 - >應該返回所需Departure and Destination
的結果與任何Layover
。 或第二個例子:填寫Destination
與Layover
但留下Departure
空會導致與任何Departure
所需搜索的Destination and Layover
。
請讓我知道,如果可能我的代碼,並可能如何。 非常感謝你們!
完美的,這個工作很好,解決方案很容易! :)也有任何具體的建議什麼改變我的代碼,所以它不容易sql注入?我不確定我可以改變什麼來防止這種情況發生。非常感謝! –