[英]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.