2 回答

TA贡献1843条经验 获得超7个赞
您可以使用之间:
SELECT
*
FROM
reservation
WHERE
(
time_in BETWEEN ('$time_in' AND '$time_out') OR
time_out BETWEEN ('$time_in' AND '$time_out') OR
'$time_in' BETWEEN (time_in AND time_out) OR
'$time_out' BETWEEN (time_in AND time_out)
) AND
day = '$Fday' AND
meeting_table = '$selected_radio'
此查询将满足以下情况:
9 : 00 - 11:00 - 现有预订
08:00 - 09:30 - 占用
10:30 - 12:00 - 占用
10:30 - 12:00 - 占用
07:30 - 08:30 - 免费
11:30 - 12:30 - 免费
07:00 - 12 :00 - 占用
我相信你应该保持你的时间段像8:00 - 8:59。使其8:00 - 9:00会给你一个虚假的“占领”,如果有人试图安排插槽9:00 - 10:00,为time_in将在相同的时间time_out的提前预约的。
重要的!!! 就这样,您的代码容易受到 SQL 注入攻击!我建议使用 PDO 来修复它。PHP PDO Prepared Statements Tutorial to prevent SQL Injection是关于如何使用它的一个很好的教程。
编辑: 增加了两个条件WHERE子句,以覆盖所述情况下,当有人试图调度时隙与time_in和time_out现有保留的开始和结束时间之间。
例如:
09 : 00 - 11:00 - 现有预订
10:00 - 10:30 - 被占用

TA贡献1829条经验 获得超6个赞
这是您的查询。CAST
对datetime
有工作之前,首先time
。
SELECT * FROM `reservation` WHERE time_in >= cast('$time_in' as datetime) and time_out <= cast('$time_out' as datetime) AND day = '$Fday' AND meeting_table = '$selected_radio'
- 2 回答
- 0 关注
- 745 浏览
添加回答
举报