如何从我的日期范围选择器中选择一个日期?
42
这是我的查询来自日期范围选择器:
<script>
$(document).ready(function(){
$.datepicker.setDefaults({
dateFormat: 'yy-mm-dd'
});
$(function(){
$("#from_date").datepicker();
$("#to_date").datepicker();
});
$('#filter').click(function(){
var from_date = $('#from_date').val();
var to_date = $('#to_date').val();
if(from_date != '' && to_date != '')
{
$.ajax({
url:"filtertable.php",
method:"POST",
data:{from_date:from_date, to_date:to_date},
success:function(data)
{
$('#order_table').html(data);
}
});
}
else
{
alert("Please Select Date");
}
});
});
</script>
如果您尝试选择2个相同的日期,则因此无法使用
query = "SELECT *
FROM gsm2 WHERE setTime BETWEEN '".$_POST["from_date"]."' AND
'".$_POST["to_date"]."'
我需要添加一个
的语句 $query = "SELECT *
FROM gsm2 WHERE setTime BETWEEN '".$_POST["from_date"]."' AND
'".$_POST["to_date"]."' ";
如何将此条件添加到旧查询?
答案 0 :(得分:1)
而不是你可以只做手册:
SELECT *
FROM gsm2 WHERE setTime >= :fromTime AND setTime <= :toTime
注意我在那里使用占位符?您也应该使用预备语句。
在实践中,如果您使用的是MySQLi,您可以这样做:
$db = mysqli_connect(...); //Your connection
$stmt = $db->prepare("SELECT * FROM gsm2 WHERE setTime >= ? AND setTime <= ?") or die($db->error);
$from = filter_input(INPUT_POST, "from_date");
$to = filter_input(INPUT_POST, "to_date");
$stmt->bind_param("ss", $from, $to);
$stmt->execute();
$res = $stmt->get_result();
// Do things like $res->fetch_assoc or similar here
请注意,如果您的$ _POST数据是日期,但您的SQL字段是DATETIME
,那么您可能需要进行某种类型的转换,例如做WHERE DATE(setTime) >= ? AND DATE(setTime) <= ?
答案 1 :(得分:0)
我可能错了(因为我现在没有能力对它进行测试),但这应该有效:
$query = "SELECT *
FROM gsm2 WHERE setTime BETWEEN ".$_POST['from_date']." AND ".$_POST['to_date'].";
假设您的初始查询是正确的,但是当您使用('和“)的加载时,您的PHP代码会抛出一些错误。
主要是发帖指出您正在接受用户输入并将其直接放入SQL查询中。我很遗憾在2018年的StackOverflow上,这个类别中的许多用户将PHP输入变量直接放入SQL查询中,然后执行它而不检查输入以确保它首先有效。
1; DROP TABLE gsm2;
等输入可能会删除整个表格。我不确定是什么类型的服务器端防火墙来处理这种类型的攻击,但这种做法都很糟糕。