MySql使用html日期输入选择datetime和datetime

时间:2016-08-23 11:04:08

标签: php mysql date datetime

我正在使用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."'修复它!

2 个答案:

答案 0 :(得分:0)

我只是更改日期部分。只需改变日期部分,如

BETWEEN NOW() AND ".$packHistDate."

对我来说很有效。

或者您可以通过添加额外的单引号

来实现
BETWEEN NOW() AND '".$packHistDate."'

答案 1 :(得分:0)

".$datePackFinished."周围添加单引号,以便'".$datePackFinished."'修复它!