PHP - 如何检查日期是否介于两个现有日期之间?

标签 php mysql

我正在尝试制作一个预订页面,该页面需要用户输入入住和退房日期以及房间号。

这是我当前的代码;它当前的功能是获取选定房间号的所有预订并检查其所有日期范围以查看当前预订之一是否与用户输入日期重叠。如果重叠则回显错误,否则什么都不做。 :

$sql18 = "SELECT rid, checkin, checkout FROM bookings
    WHERE rid = $rNumber";    //$rNumber is room number obtained from a dropdown list
$results18 = mysqli_query($conn, $sql18);

while ($row = mysqli_fetch_array($results18)) {
    if (('$cInDate' >= $row["checkin"] && '$cInDate' < $row["checkout"]) ||  //$cInDate and $cOutDate are user inputs
        ('$cOutDate' > $row["checkin"] && '$cOutDate' <= $row["checkout"])) {
        echo "invalid booking";
    }
}

我测试了 if 语句以触发错误,但没有成功。我仍然没有错误地通过 if 语句

最佳答案

您可以在 mysql 查询中进行比较,而不是在 php 中进行比较。

$sql18 = "SELECT rid, checkin, checkout 
FROM bookings
WHERE rid = $rNumber 
AND checkin <= '{$row['checkout']}' 
AND checkout => '{$row['checkin']}'";

当您比较两个日期和两个日期时,您可以使用交叉比较,将 checkin 列与 checkout 日期和 checkout 进行比较包含 checkin 日期的列,如上面的查询所示。

关于PHP - 如何检查日期是否介于两个现有日期之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559468/

相关文章:

php - MySQL总结关系数据库中的数字

php - 如何在 PHP 中使用 substr_count() 计算空格

php - 简单的日期函数在 php 中不起作用

mysql - Amazon RDS 备份/快照实际上是如何工作的?

mysql - mysql where子句中的MAX函数

MySQL 触发器采用文本变量

mysql - 将表名更改为大写

php - 具有用户本地列表的网站,仅用于存储数据,简单表格

PHPUnit 无法通过命名空间自动加载找到类

php - MYSQL 中仅对字母数字字符串中的数字进行排序