为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查两个日期之间是否存在条目

如何检查两个日期之间是否存在条目

PHP
慕姐4208626 2021-10-22 14:17:12
我有一个 sql 表“航班”,其中包含所有航班的所有详细信息:飞机注册、到达日期、出发日期等等......现在当我想创建一个新航班时,我想检查一个航班在两个给定日期之间已经存在相同的注册。EG:有一个名为 IFLY 的航班,该航班于 2019 年 7 月 22 日抵达并于 2019 年 7 月 25 日起飞,现在如果我尝试创建具有相同注册但在 2019 年 7 月 23 日抵达并于 2019 年 7 月 24 日起飞的另一个航班,我会想检查数据库,在这些日期期间,另一个具有相同注册的航班已经在数据库中并提醒用户。我尝试过这样的事情:html form via jquery/ajax call a request on the DB$regist = $_POST['regCreate'];$arrivalDate = $_POST['adof'];$departureDate =$_POST['ddof'];$sql = "SELECT reg FROM flights WHERE reg = '$regist' AND (adof or ddof)  >= '$arrivalDate' AND (adof or ddof) <= '$departureDate'  ";//$data = mysqli_query($conn, $sql); if (mysqli_num_rows($data) > 0) {  echo 'exists'; }此代码不起作用,因为如果我创建一个位于已创建的两个日期之间的新航班,则不会给我例外结果。
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

如果两个时间段都在另一个结束之前开始,则两个时间段会重叠。


您可以将其表述为:


SELECT f.reg

FROM flights f

WHERE f.reg = ? and

      f.departureDate < ? and  -- the input arrival date

      f.arrivalDate > ?        -- the input departure date

请注意,我更改了语法以使用参数。这是在 PHP 或任何其他应用程序层中设计查询时的最佳实践。


查看完整回答
反对 回复 2021-10-22
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我已经建立了这个解决方案


$sql = "SELECT reg, adof, ddof FROM flights WHERE reg = '$regist' AND adof < 

'$arrivalDate' ";//

 $data = mysqli_query($conn, $sql);


if (mysqli_num_rows($data) > 0) {

 foreach ($data as $key => $v) {

  if ($v['ddof'] >= $arrivalDate) {

   echo 'exists';

   }

  }

 }


查看完整回答
反对 回复 2021-10-22
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信