问题是:
我想检查一下,我的日期在我的数据库的所有日期之间。 这是我的代码:
if ($result = $con->query("SELECT `r_id` FROM `reservation` WHERE $cid BETWEEN `r_start` AND `r_ende` ")) {
$r = mysqli_fetch_assoc($result);
}
$a=0;
if($r>$a)
{
$message = "Your Startdate lies in an already booked span.";
echo "<script type='text/javascript'>alert('$message');</script>";
echo "<script>window.location='reservation.php';</script>";
}
我的数据库看起来像这样
r_id r_start r_ende
9 0004-01-24 0004-06-02
8 0004-01-23 0004-06-02
$cid
是我的开始日期,有效且无误。
它应该得到它在时间跨度之间的行的r_id
。
当ID计数增加时,它始终高于0,因此如果$r
匹配,则它高于0并显示错误。
因此,如果我的$cid
与0004-01-25
类似,则会收到消息,因为$r
是9还是8?但它不..
当我print_r($result);
时,我得到mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 0
。对于print ($r);
,不会出现任何内容。
有人可以帮助我吗?
答案 0 :(得分:2)
因为@ChandraKumar不会说出你的错误是什么。
如果不将日期括在引号中,MySQL会将其视为数学公式。
0004-01-24 = 4 - 1 - 24 = -21
您需要将日期括在引号中,此时MySQL会看到它是一个字符串,并且由于您对日期列进行检查,它会将其解释为日期。
答案 1 :(得分:0)
试试这个
$sql = "SELECT * FROM reservation where '".$cid."' between r_start and r_ende";
if ($result = $con->query($sql)) {
$r = mysqli_fetch_assoc($result);
}
$a = 0;
if($r > $a)
{
$message = "Your Startdate lies in an already booked span.";
echo "<script type='text/javascript'>alert('$message');</script>";
echo "<script>window.location='reservation.php';</script>";
}
答案 2 :(得分:-2)
$sql = "SELECT * FROM reservation where '.$cid.' between r_start and r_ende";
$result = $conn->query($sql);
$result ->setFetchMode(PDO::FETCH_ASSOC);
$rows = $result ->rowCount();
if($rows > 0)
{
$message = "Your Startdate lies in an already booked span.";
echo "<script type='text/javascript'>alert('$message');</script>";
echo "<script>window.location='reservation.php';</script>";
}