我只想通过选择日期在日期之间筛选。 我的数据库输入了具有不同时间值的日期记录。 但我只想过滤日期。
这是我的代码
<?php
//filter.php
if(isset($_POST["from_date"], $_POST["to_date"]))
{
$connect = mysqli_connect("localhost", "", "", "");
$output = '';
$query = "
SELECT
CreatedDate,
COUNT(`Ticket`) AS Tickets,
SUM(CASE WHEN status = 'Closed' THEN 1 ELSE 0 END) as Closed
FROM Dashboarddetails
WHERE CreatedDate BETWEEN '".$_POST["from_date"]."' AND '".$_POST["to_date"]."'
GROUP BY CreatedDate
ORDER BY CreatedDate
";
请找到图片,这是我得到当前代码的结果。
您可以使用DATE()函数
,并且应该避免在sql代码中使用php var来防止sqlinjection为此请看一看apt prepated语句E和为您的db驱动程序绑定param
根据实际情况,您使用的是msqli,而不是您可以使用的PDO
if(isset($_POST["from_date"], $_POST["to_date"]))
{
$connect = mysqli_connect("localhost", "", "", "");
$output = '';
$stmt = $connect->prepare("CreatedDate,
COUNT(`Ticket`) AS Tickets,
SUM(CASE WHEN status = 'Closed' THEN 1 ELSE 0 END) as Closed
FROM Dashboarddetails";
WHERE CreatedDate BETWEEN DATE(?) AND DATE(?)
GROUP BY CreatedDate
ORDER BY CreatedDate");
$stmt->bind_param('ss',$_POST["from_date"], $_POST["to_date"]);
$stmt->execute();
$result = $stmt->get_result();
while ($myrow = $result->fetch_assoc()) {
....
}
.....
无论如何,请确保您在POST中的日期是规范格式的日期提示,并且两个日期的date()部分是一个有效的日期范围(如果您传递的两个日期是同一天的,您的between子句不起作用)