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

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

$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语句

php - PHP-如何检查日期是否在两个现有日期之间?-LMLPHP
php - PHP-如何检查日期是否在两个现有日期之间?-LMLPHP

最佳答案

为什么不只在SQL查询中使用函数之间?

您的SQL查询应如下所示

$sql18 = "SELECT
rid, checkin, checkout
FROM bookings
WHERE rid = $rNumber AND
(checkin BETWEEN $cInDate AND $cOutDate) AND
(checkout BETWEEN $cInDate AND $cOutDate)";


如果有特定时间的预订,这将返回。

避免在SQL查询中使用普通的PHP变量,否则会导致SQL注入问题。

10-07 19:53
查看更多