gpt4 book ai didi

php - 如何在php中显示特定日期的记录?

转载 作者:行者123 更新时间:2023-11-29 11:15:15 26 4
gpt4 key购买 nike

我必须显示特定日期的记录。下面是我尝试过的代码。我得到输出“0 个结果”;

   $startDate=$_POST['startDate'];//date in format(d-m-y)
$endDate=$_POST['endDate'];//date in format(d-m-y)

include("../db/connection.php") ;

$sql ="SELECT *FROM Emp WHERE empDate BETWEEN $startDate AND $endDate";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["Id"]. " - Name: " . $row["First_name"]. " " . $row["Last_name"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
}

我的数据库中有这样的记录

2016-10-03 2:51:35
2016-10-03 2:53:25
2016-10-04 3:52:30
2016-10-04 4:15:55

我在 stackoverflow 上发现了问题 get values from table only for a specific day in mysql但该查询对我不起作用。你能帮我吗?

最佳答案

首先,您必须使用 strtotime() 将日期格式更改为“Y-M-D”:

<?php
$startDate = date("Y-m-d H:i:s",strtotime($_POST['startDate'])); // will return data something like 2016-10-05 00:00:00
$endDate = date("Y-m-d H:i:s",strtotime($_POST['endDate'])); // will return data something like 2016-10-05 00:00:00
?>

您需要在 SQL 语句中的日期值周围使用单引号:

$sql ="SELECT * FROM Emp WHERE empDate BETWEEN '$startDate' AND '$endDate'";

根据您的问题,您的日期值为:

2016-10-03 2:51:35
2016-10-03 2:53:25
2016-10-04 3:52:30
2016-10-04 4:15:55

在您的数据库中,因此您必须使用“Y-M-D”格式的 DATE。

<小时/>

另请注意,您的代码对 SQL 注入(inject)是开放的,您必须需要通过 SQL 注入(inject)来防止您的代码,此引用将为您提供帮助:How can I prevent SQL injection in PHP?

<小时/>

更新:

就您而言,如果您没有从 $_POST 输入中获取 H:i:s ,则可以这样使用:

<?php
$startDate = date("Y-m-d",strtotime($_POST['startDate']));
$endDate = date("Y-m-d",strtotime($_POST['endDate']));
$sql ="SELECT * FROM Emp
WHERE empDate
BETWEEN '$startDate 00:00:00' AND '$endDate 23:59:59'";
?>

关于php - 如何在php中显示特定日期的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39867101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com