繁体   English   中英

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

[英]find if entry exists between two dates in two different columns?

代码有什么问题? 仅在给定时间段内不存在记录时,才需要允许新条目。 就像数据库中存在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); } } } ?> 

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

首先,您的日期( $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注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM