繁体   English   中英

PHP选择日期等于DateTime的位置

[英]PHP Select Where Date Equals DateTime

我有一个网站,其中的帖子记录在具有Added值(设置为DateTime)的MySQL表中。 存储值的示例是2016:12:12 15:30:21

因此,我现在想构建一个页面,该页面使用php脚本和URL参数(如added.php?date=2016-12-12选择某个日期的所有记录。

所以我的PHP脚本是这样的:

<?php
    if(isset($_GET["date"])){
        $date = $_GET["date"];
    } else {
        header("Location: $site_url");
        exit();
    };
?>

现在如何实际选择具有该日期的行? 我正在尝试使用:

$rows_sql = "SELECT id FROM posts WHERE added = '$date';

但这是行不通的。 有什么想法可以使我以我所拥有的格式工作吗?

您能否按以下方式更改查询行:

$rows_sql = "SELECT id FROM posts WHERE Date(added) = '$date';

您需要注意的几件事:

您的代码可用于SQL Injection。

您需要以正确的格式提供日期。 为此,我建议使用DateTime :: createFromFormat函数或strtotime。 让我们以更简单的方式(strtotime)来做

<?php 

$parsedDate = strtotime($_GET['date']);

if (false !== $parsedDate) {
    $date = date('Y-m-d H:i:s', strtotime($_GET);
    $rows_sql = "SELECT id FROM posts WHERE added = '$date'";
} else {
    die("date is in wrong format");
}

基本上,它检查是否可以将字符串转换为时间戳strtotime函数,并且如果可能(不错误),它将以数据库可以处理的格式进行转换YYYY-mm-dd hh:mm:ss

通常,如果您想从某个时间段中进行选择,则可以使用> <和BETWEEN之类的运算符来使用。 例如,如果要从GET date参数中指定的全天中选择行

    if($date = strtotime($_GET['date'])) {
         $today = date('Y-m-d', $date);
         $rows_sql = "SELECT id FROM posts WHERE added BETWEEN '$today 00:00:00' AND '$today 23:59:59'";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM