我正在嘗試製作一個預訂頁面,該頁面會接受用戶輸入的入住和退房日期以及房間號碼。PHP - 如何檢查日期是否在兩個現有日期之間?
這是我目前的代碼;其當前功能是獲取所選房間號碼的所有預訂,並檢查其所有日期範圍,以查看當前預訂中的某個預訂與用戶輸入日期重疊。如果它重疊,則回顯錯誤,否則不做任何事情。 :
$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語句,沒有錯誤
在查詢中使用'between'函數。 http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between – chris85
對於開始,您應該刪除$'cOutDate和$ cInDate中的',如果您使用它'$ cInDate '你將它比較爲一個字符串 – user1811893
**警告**:當使用'mysqli'時,你應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php )和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman