亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用sql查詢檢查時間是否已被占用

使用sql查詢檢查時間是否已被占用

PHP
烙印99 2021-12-24 09:49:47
我目前正在開發會議室預訂系統,我在檢查時間范圍是否被占用時遇到問題。示例 9:00 - 11:00 已被占用,如果其他用戶將設置或輸入 9:30 - 10:30 警報必須顯示時間已被占用且預訂不會保存到數據庫中。這個查詢是我試過的,但它只在輸入的時間輸入和輸出具有相同的值時才有效..SELECT * FROM `reservation`    WHERE time_in = '$time_in' AND time_out = '$time_out' AND day = '$Fday' AND meeting_table = '$selected_radio'$time_in,$time_out,$Fday 是用戶設置時間的選擇框中的值。而 $selected_radio 是他們想要保留的區域的選定電臺的值。我的“預訂”表是這樣的:id | emp_id | emp_name | month | day | year | meeting_table | time_in | time_out 1  | 23345  | name     | 09    | 03  | 2019 | area 1        | 7:00    | 9:00
查看完整描述

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 - 被占用


查看完整回答
反對 回復 2021-12-24
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

這是您的查詢。CASTdatetime有工作之前,首先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'


查看完整回答
反對 回復 2021-12-24
  • 2 回答
  • 0 關注
  • 698 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號