-1

我试图通过从两个日期选择器中以 from 和 to 的名称传递值来从 Microsoft 访问数据库中获取数据。我正在创建一个 php 网站,但我无法获得 ms 访问权限以返回我想要的数据。

这是我当前的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Date Query</title>
</head>
<body>
    <form action="" method="POST">
        <label for="from">From :</label>
        <input type="date" id="from" name="from">
        <label for="to">To :</label>
        <input type="date" id="to" name="to">
        <button type="submit" name="submit">Submit</button>
    </form>
</body>
</html>

<?php 
    if(isset($_POST['submit'])){
        $from=$_POST['from'];
        $to=$_POST['to'];

        $conn = odbc_connect("Ingot_Daily_Report", "", "");
        $query = "SELECT * FROM Output_Data WHERE data_Day BETWEEN '$from' AND '$to'";
        $sql = odbc_exec($conn, $query);
        while($row=odbc_fetch_array($sql)){
            echo $row['data_Day'];
            echo "<br>";
            echo $row['KPI_Daily_Target'];
            echo "<br><br>";
        }
    }
?>

between 子句没有返回任何数据,但是当我删除 between 子句时,sql 会获取数据库表中所有可用的数据。是否有我应该使用的语法或运算符或日期格式的任何更改来检索正确的数据集?

我的 data_Day 列是 shortText 格式。我希望返回的数据介于这两个日期之间。

4

1 回答 1

1

经过一番艰苦的调查后,我在 SQL 查询中的 php 变量之前和之后添加了 # 符号。这背后的原因是因为 Microsoft Access 似乎只将 # 符号之间的数据识别为日期格式。

 $query = "SELECT * FROM Output_Data WHERE data_Day BETWEEN '$from' AND '$to'";

 $query = "SELECT * FROM Output_Data WHERE data_Day BETWEEN #$from# AND #$to#";

我使用 date() 和 strtotime() 函数从 datepicker 更改我的日期格式

date("Y/m/d",strtotime(@@php variable with date value stored inside@@));

最后,我将列数据格式更改为短日期下的日期/时间,以使这些代码正常工作。

于 2021-08-03T05:43:07.793 回答