php - 如何使用表单将 SQL 查询更改为仅显示特定范围内的注册日期?

标签 php html mysql sql forms

下面的代码是我目前所拥有的,如果有人知道 BETWEEN 的工作原理并能指出正确的方向,我将不胜感激。

<form action="index.php" method="GET">
    Starting from:<br>
    <input type="date" name="startDate" ><br><br>
    Upto:<br>
    <input type="date" name="uptoDate" ><br><br>
    <input type="submit"> 
</form>

<?php
    // I removed the connection details for obvious reasons
    // It does connect and display the data with no problems
    $startingFrom = $_GET[startDate];
    $upto = $_GET[uptoDate];

    // I tried this but it does not seem to work
    // $query = "SELECT * FROM table BETWEEN $startingFrom AND $upto"; 
    $query = "SELECT * FROM table"; 
    $result = mysql_query($query);

    echo "<table><th>Name</th><th>Registered Date</th>";

    while($row = mysql_fetch_array($result)){
        echo "<tr><td>" . $row['name'] . "</td><td>" . $row['registered'] . "</td></tr>"; 
    }
    echo "</table>"; 
    mysql_close(); 
?> 

最佳答案

如果您要在两个给定日期之间返回结果,请使用此代码

SELECT *
FROM table
WHERE date BETWEEN CAST('2015-04-03' AS DATE) AND CAST('2015-05-28' AS 
DATE);

对于包含日期的 BETWEEN,您需要使用 CAST() 将值转换为适当的数据类型,例如 DATE 或 DATETIME。如果您将 BETWEEN 与 DATETIME 一起使用,请将您的值转换为 DATETIME:

SELECT *
FROM table
WHERE date BETWEEN CAST('2015-04-03 08:40:09' AS DATETIME) AND CAST('2015-05-28 02:50:09' AS DATETIME);

作为旁注,使用 MySQL 改进的扩展 (mysqli) 并且您忘记关闭输入字段,这不是一个好的代码。

关于php - 如何使用表单将 SQL 查询更改为仅显示特定范围内的注册日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938641/

相关文章:

ubuntu - 在 ubuntu 14.04 上安装 xdebug 不创建 xdebug.ini 文件

php - 进行 URL 重写

php - MySQL为了开发临时修改数据库

java - 使用 Hibernate Criteria 加入而不使用 Alias on Restriction

html - 为什么在这种情况下需要负 margin 顶部

mysql - 我希望返回名称而不是 id

php - Xampp 本地主机/仪表板

php - 如何使用 php 检查 $_GET ['id' ] 是否已设置且不为空

php - 在 PHP 中添加列

asp.net - 在绝对定位的元素中嵌套登录控件时得到一些奇怪的结果