gpt4 book ai didi

php - 检查资源预留可用性

转载 作者:行者123 更新时间:2023-11-29 02:24:09 26 4
gpt4 key购买 nike

我有下表:

id | rsvp_date | return_date | user_id | car_id

其中ID是PK,rsvp_date & return_date是DATETIME,user_id & car_id分别是到user表和car表的FK。

我想做的是在用户每次想要预订时进行检查。检查的查询归结为此(此查询由函数 checkAvailability() 调用:

SELECT id
FROM `car_reservation`
WHERE ('2014-10-06 07:00:00' BETWEEN rsvp_date AND return_date)
AND car_id = 5;

我提到的功能:

function checkAvailability($datetime, $id = null){
$sql = "SELECT id
FROM `car_reservation`
WHERE ('".$datetime."' BETWEEN rsvp_date AND return_date)
AND car_id = ".$id;

$query = $this->db->query($sql);
// echo "<pre>"; print_r($this->db->last_query());die();
if($query->num_rows() > 0){
return FALSE;
}else{
return TRUE;
}
}

给定日期将与 rsvp_date 和 return_date 列匹配的位置。日期取自表单中的一个字段(有 2 个字段;开始日期和返回日期)。

当前代码无法正常工作。例如:

  • 客人 #1:在 2014-10-06 07:00:00 到 2014-10-06 之间预订 A 车10:00:00 [有效]
  • 客人 #2:在 2014-10-06 07:00:00 之间预订 B 车至 2014-10-06 10:00:00 [有效]
  • 客人 #3:预订 A 车2014-10-06 08:00:00 至 2014-10-06 11:30:00 [不可用,由于启动没有时间]
  • 客人 #4:在 2014-10-06 06:00:00 到 2014-10-06 之间预订 B 车14:00:00 [有效,但不应该如此。因为客人 #2 已经在 07:00:00 - 10:00:00 之间预订了汽车]。

任何人都可以帮助我改进我的代码,以便在请求的预订之间已经有预订时最后一个条件将返回 False 吗?

PS:我找到了这篇文章,但很难理解它,我正在寻找类似的方法,只是更简单。 http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET

编辑:

这张图片可视化了所有内容,我想现在我只需要实现每个列标题上指定的功能(那些有复选标记的)。

enter image description here

最佳答案

根据这个SO question你必须检查不同的:

$query = "
SELECT id
FROM `car_reservation`
WHERE (
'".$datetimeStart."' <= return_date
AND
'".$datetimeEnd."' >= rsvp_date
) AND car_id = ".$id
";

参见 SQL fiddle :http://sqlfiddle.com/#!2/d818c/1

$datetimeStart2014-10-06 06:00:00$datetimeEnd2014-10-06 14:00:00 您的 Guest #4 测试用例场景。

如果您将 SQL 查询与可能包含用户输入的变量连接起来,请注意 SQL 注入(inject)。

关于php - 检查资源预留可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com