【发布时间】:2020-11-08 23:33:51
【问题描述】:
为了好玩,我正在制作一个粗略的约会安排程序。
我有一个页面会显示可用的约会。
我只想显示 30 天后的约会,也就是一个月并且未预订,也就是 user_id = 0。
预订的约会具有与其帐户相关联的 user_id。
我不知道如何告诉 MySQL 只显示日期在今天和从今天起一个月之间的约会。
页面使用 PHP 和使用 PDO 的 MySQL。
我对 PDO 最满意,这就是我使用它的原因。
我看到使用的是 DATE_ADD()、CURDATE() + INTERVAL,以及我在页面上的内容
<?php
//opens database path
$db = new PDO(DB_PATH, DB_LOGIN, DB_PW);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$today = array(date(Y), date(m), date(d));
$result = $db->query("
SELECT *
FROM appt
WHERE DAY(date) < $today[3]
AND MONTH(date)=today[2]+1
ORDER
BY date DESC
, time DESC
");
foreach($result as $row)
{
print "<tr>";
print "<td><input type='checkbox' name='id[]' value=".$row['id']."></td>";
print "<td>".$row['date']."</td>";
print "<td>".$row['time']."</td>";
print "<td>".$row['doctor']."</td>";
print "</tr>";
}
?>
数据库将照此创建
CREATE TABLE appts
(key int unsigned not null auto_increment primary key
, user_id int unsigned
, date date
, time time
, doctor tinytext);
【问题讨论】:
-
考虑将日期和时间存储为单个实体
-
并了解 sql 注入以及准备和绑定查询的重要性
-
@Strawberry 为什么会更好?
标签: php mysql sql datetime where-clause