2017-08-06 53 views
2

问题是这样的:查看数据库中日期之间的日期

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

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

如果有人在运行此代码的同时预订了该插槽,该怎么办? – Strawberry

回答

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

告诉作者错误是什么! – Geoffrey

2

由于@ChandraKumar是不会说你的错误是什么,我会的。

通过不引用你的日期MySQL将它视为一个数学公式。

0004-01-24 = 4 - 1 - 24 = -21

您需要附上日期此时MySQL会看到它是一个字符串的报价,由于对一个日期列的检查,将它解释为一个日期。

+0

非常感谢!很有帮助! – pr0cz

-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>"; 
    } 
+2

如果您要回答问题,请告诉该人员解决方案是什么......以及为什么! – Geoffrey