【发布时间】:2011-12-10 08:33:42
【问题描述】:
我正在实施一个酒店预订网站,酒店所有者可以在该网站上根据空房情况预订房间。为了检查可用房间的数量,我编写了如下代码:
$q=" SELECT *
FROM tbl_roombook
WHERE
hotel_id='$h_id'AND
start_date
BETWEEN '$date1'
AND '$date2'
AND end_date
BETWEEN '$date1'
AND '$date2'
";
$res = $this->db->returnArrayOfObject($q);
//var_dump($res);
在我的数据库中,从 2011-12-25 到 2011-12-31 预订了 2 个房间。我的 echo $date1 是 2011-12-29 和 $echo date2 是 2011-12-30 。但是$q 返回空结果!为什么?
【问题讨论】:
-
start_date和end_date的列类型是什么? -
他们在约会中
-
开始日期 111225 不在 111229 和 111230 之间
-
请尝试
start_date <= '$date2' AND end_date >= '$date1'See this answer 进行解释。 -
在调试查询时,查看 mysql 查询日志以实际了解执行的内容非常有用。您这里的问题是 MySQL 查询,用 PHP 将问题复杂化只会使问题看起来更复杂。