检查数据库中日期之间的日期

时间:2017-08-06 19:46:14

标签: php mysql

问题是:

我想检查一下,我的日期在我的数据库的所有日期之间。 这是我的代码:

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并显示错误。 因此,如果我的$cid0004-01-25类似,则会收到消息,因为$r是9还是8?但它不.. 当我print_r($result);时,我得到mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 0。对于print ($r);,不会出现任何内容。

有人可以帮助我吗?

3 个答案:

答案 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>";
    }