我正在使用 MySqli 作为 MySql 服务器。我正在设置一个表单,用户可以在其中使用 html 表单中的日期输入类型输入日期:
<div class="ElHolder">
<form action="productionOutput.php" method="get">
<input type="date" name="packHistDate" required>
<input type="submit">
</form>
</div>
然后我使用 php 来获取输入的日期,并尝试在我的 sql 查询中使用它。我之前在代码中设置了 $packHistDate = $_GET["packHistDate"]
。
$sql = "SELECT
PRODUCTS.ProductId,
PRODUCTS.Name,
DATE(PACKING_QUEUE.DatePackFinished) AS \"DateFinished\",
PACKING_QUEUE.Packets,
PACKING_QUEUE.SizeCode,
PACKING_QUEUE.RunSize,
BATCHES.BatchId
FROM PACKING_QUEUE
JOIN BATCHES ON BATCHES.BatchId = PACKING_QUEUE.BatchId
JOIN PRODUCTS ON PRODUCTS.ProductId = BATCHES.ProductId
WHERE PACKING_QUEUE.Status = 6 AND PACKING_QUEUE.DatePackFinished BETWEEN ".$packHistDate." AND NOW()
ORDER BY PACKING_QUEUE.DatePackFinished DESC";
$result = $conn->query($sql);
if (!$result) {
printf("Errormessage: %s\n", $conn->error);
}
PACKING_QUEUE.DatePackFinished 是 DATETIME,我认为这就是错误产生的地方。但是,我没有收到代码执行的任何错误消息,但返回了所有日期。
我尝试使用 DATE() 将它们全部转换为日期,但仍然不起作用。
非常感谢任何帮助
更新:在 ".$datePackFinished."
周围添加单引号,就像 '".$datePackFinished."'
修复了它!
最佳答案
我只是更改日期部分。只需更改日期部分,如
BETWEEN NOW() AND ".$packHistDate."
对我来说它有效。
或者您可以通过添加额外的单引号来实现
BETWEEN NOW() AND '".$packHistDate."'
关于php - MySql使用html日期输入选择带有日期时间的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39099421/