php - 如何在两个日期之间验证房间的可用性?
问题描述
我有一个关于酒店房间预订系统的问题,这些是我的桌子:
$stmt = $dbh->prepare('
SELECT *
FROM chambres c
LEFT
JOIN booking b
ON c.numero_chambre = b.no_chambre
WHERE b.no_chambre IS NULL
OR (b.check_out <= :check_in AND b.check_in <= :check_out)
OR (b.check_out <= :check_in AND b.check_out >= :check_out)');
$stmt->bindParam(':check_in',$date_in);
$stmt->bindParam(':check_out',$date_out);
$stmt->execute();
$resultats= $stmt->fetchAll(\PDO::FETCH_ASSOC);
print_r($resultats);
我认为条件有效,但例如,如果我想在“2021-01-15”和“2021-01-22”之间找到可用房间,它仍然会发现房间 1 可用,因为它可以在我的预订表,行:
[id] => 1 [hotel_id] => 1 [numero_chambre] => 1 [check_in] => 2021-01-13 [check_out] => 2021-01-15 [no_chambre] => 1 [date_creation] => 2021 -01-11 [client_id] => 1)
有人会想办法解决这个问题吗?
非常感谢 !
解决方案
推荐阅读
- bash - Bash 忽略命令行参数中的引号
- google-apps-script - 谷歌应用脚本从工作表更新表单
- flutter - Flutter-我如何从登录屏幕切换到主页和返回?后端工作但不手动刷新无法显示屏幕
- jenkins - Jenkins 流水线脚本中的当前工作目录
- awk - 从列表中的字符串中提取所有数字
- react-admin - 通过 dataprovider 加载数据后的 react-admin 原始状态
- javascript - 创建一个按钮以将多个类添加到多个按钮并在单击重置时将其删除
- javascript - 如果在地图内其他
- javascript - 一起使用 jQuery Pan 和 Zoomooz 来平移和缩放 DOM 元素
- javascript - ' ' 字符串文字包含未转义的换行错误