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 關注
- 698 瀏覽
添加回答
舉報