【发布时间】:2019-05-09 08:20:26
【问题描述】:
我为日期间隔和不同级别 (0,1,2) 创建了这个简单的过滤器。到目前为止我有这个代码:
if(isset($_POST['filtersubmit'])){
$datex = str_replace('/', '-', $_POST['firstdate']);
$date1 = date("Y-m-d", strtotime($datex));
$datey = str_replace('/', '-', $_POST['lastdate']);
$date2 = date("Y-m-d", strtotime($datey));
$projects = $_POST['projekt'];
if(isset($date1) && isset($date2)){
$query = mysqli_query($conn, "SELECT * FROM zapasy WHERE datum BETWEEN
'$date1' AND '$date2' ORDER BY id DESC");
}
if($projects == 0){
$query = mysqli_query($conn, "SELECT * FROM zapasy WHERE projekt = '0' ORDER BY id DESC") or die(mysqli_errno($conn). '-'. mysqli_error($conn));
} elseif($projects == 1){
$query = mysqli_query($conn, "SELECT * FROM zapasy WHERE projekt = '1' ORDER BY id DESC") or die(mysqli_errno($conn). '-'. mysqli_error($conn));
} elseif($projects == 2){
$query = mysqli_query($conn, "SELECT * FROM zapasy WHERE projekt = '2' ORDER BY id DESC") or die(mysqli_errno($conn). '-'. mysqli_error($conn));
}
}
现在,如果我只选择其中一个过滤器,效果很好,但如果我想要间隔和级别过滤器,它就不起作用。我不确定该怎么做。我非常感谢您的帮助。
【问题讨论】:
-
当你在 sql 查询中有
WHERE条件时,为什么还要使用 php if-else?您也可以在查询中传递 php 变量 -
@ZainFarooq 你的意思是 $query = mysqli_query($conn, "SELECT * FROM zapasy WHERE projekt1 = '$projects' ORDER BY id DESC"); ??
-
是的.. 但是为了防止 sql 注入,您应该使用 pdo 或准备好的语句
-
@ZainFarooq MySQLi 可以很好地使用准备好的语句。 PDO 不会自动阻止 SQL 注入,您需要绑定值 - 正如您在 MySQLi 中所需要的那样。
-
@Qirel 是的。 pdo 绑定值