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