[英]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.