查找两个不同列中两个日期之间是否存在条目?

时间:2019-01-20 09:46:07

标签: php mysql

代码有什么问题??仅在给定时间段内不存在记录时,才需要允许新条目。就像数据库中存在1-1-19至3-1-19一样,不应在该日期范围内进行新输入。

<?php

 if (isset($_POST['book'])) {
require 'db2.php';
$name=$_POST['name'];
$mail=$_POST['emial'];
$mob=$_POST['phone'];
$ddr=$_POST['add'];
$d11=$_POST['date'];
$d12=$_POST['date2'];
$selected_val=$_POST['type'];

if (empty($name)||empty($mail)||empty($mob)||empty($ddr)||empty($d11)||empty($d12)||empty($selected_val)) {

  header("Location: ./booking.php?error=emptyfield");
  exit();
}
elseif (!filter_var($mail, FILTER_VALIDATE_EMAIL)&& !preg_match("/^[a-zA-Z]*$/",$name)) {
  header("Location: ./booking.php?error=entervalidnaneoremail");
  exit();
}
elseif (!preg_match("/^[0-9]*$/", $mob)) {
  header("Location: ./booking.php?error=invalidphone");
}
else {
  $sql="SELECT * FROM book WHERE d1>'$d11' OR d2<'$d12'";
  $result=mysqli_query($conn,$sql);
  $row=mysqli_fetch_row($result);
  echo $row;
  if ($row>0) {
    header("Location: ./booking.php?error=Takendate");
      exit();
  }
  else {
      $sql="INSERT INTO book(name, email, no, adr, d1, d2, type) VALUES('$name','$mail','$mob','$ddr','$d11','$d12','$selected_val')" ;
      mysqli_query($conn,$sql);
  }
}
 }

 ?>

2 个答案:

答案 0 :(得分:0)

我认为您应该使用AND而不是OR

答案 1 :(得分:0)

首先,您的日期($d11 and $d12)的格式应为yyyy-mm-dd,以便它们符合mysql的标准日期格式。

然后您需要更改此句子:

 $sql="SELECT * FROM book WHERE d1>'$d11' OR d2<'$d12'";

并使用AND代替OR:

 $sql="SELECT * FROM book WHERE d1>'$d11' AND d2<'$d12'";

最后,您应该使用准备好的语句来避免SQL注入