我有一个网站,其帖子记录在MySQL表中,其值为Added
,设置为DateTime。存储值的示例是2016:12:12 15:30:21
。
所以我现在想要使用php脚本和added.php?date=2016-12-12
之类的URL参数来构建一个选择特定日期所有记录的页面。
所以我的php脚本就是:
<?php
if(isset($_GET["date"])){
$date = $_GET["date"];
} else {
header("Location: $site_url");
exit();
};
?>
我现在如何实际选择具有此日期的行?我正在尝试使用:
$rows_sql = "SELECT id FROM posts WHERE added = '$date';
但这不起作用。有什么想法,我怎么能以我的格式工作?
答案 0 :(得分:1)
您能否按照以下方式更改查询行:
$rows_sql = "SELECT id FROM posts WHERE Date(added) = '$date';
答案 1 :(得分:0)
您需要注意的事情很少:
您的代码可以用于SQL注入。
您需要以适当的格式提供日期。为此,我建议使用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函数,如果可能(非错误),它将使用DB可以处理的格式转换它YYYY-mm-dd hh:mm:ss
通常,如果您想从某个时间段中选择,那么请使用&gt;等运算符。 &LT;和BETWEEN可能会派上用场。例如,如果要从GET日期参数
中指定的整天选择行 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'";
}