我是一名编程爱好者,在我的一个小项目上工作,但当我想为我的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注入?我不确定我可以改变什么来防止这种情况发生。非常感谢! –