我现在为我的预订系统安装了数据库和表格结构。我现在需要能够在一组日期内搜索某辆车是否可用。我的表结构是:
car_table :(存储汽车信息)
ID | car_make | car_name
1 | Ford | Focus
2 | BMW | Z3
3 | Audi | A5
booking_table :(存储大部分信息 - 日期,ID等)
booking_ID | start_date | end_date
125674 | 2013-02-27 | 2013-03-01
887463 | 2013-03-05 | 2013-03-07
209930 | 2013-03-16 | 2013-03-22
reservation_table :(将汽车与预订联系起来)
ID | booking_ID | car_ID
1 | 125674 | 2
2 | 887463 | 2
3 | 209930 | 1
使用PDO PHP,最好的搜索查询是什么,以确保只有可用日期显示为可预订,因为我需要确保我没有重复预订/日期。目前我所能想到的是在客户要求的日期期间搜索任何预订,如果我得到任何结果,那么这意味着它不可用,否则我可以继续:
$query_params = array(
':start_search' => $_POST['user_selected_startdate'],
':end_search' => $_POST['user_selected_enddate'],
);
$query = "
SELECT
*
FROM
booking_table
WHERE
start_date BETWEEN :start_search AND :end_search AND
end_date BETWEEN :start_search AND :end_search
";
try {
$stmt = DB::get()->prepare($query);
$stmt->execute($query_params);
$rows = $stmt->fetchAll();
}
catch(PDOException $ex) {
die("Failed to run query: " . $ex->getMessage());
}
if(!$rows) {
// booking is available, continue and pay
}
else {
// booking is unavailable, try again
}
这是确保没有一本书在另一个插槽上的最佳程序和更安全的方法吗?