PHP检查数据库日期字段与php日期

时间:2014-05-12 18:39:59

标签: php mysql

基本上我正在做一个简单的婚礼策划师,我正在尝试检查用户已插入的日期是否可用或是否预订了场地。基本上,它是我的SQL查询摔倒了。最初我正在设定时间:

$time = mktime(0, 0, 0, $month, $day, $year);

然后我有一个SQL查询,我正在检查它先前设置的id变量和传递的日期。

$sql2 = "SELECT * FROM venue_booking WHERE date_booked = ".$time." AND venue_id =".$id;

在这种情况下,数据库中的日期是2015-01-01,而我通过的日期是2015-01-01,我在if语句中检查这个,如果从...返回的行数数据库大于0然后回显预订,否则回显可用。

即使输出意味着预订它仍然说可用。我正在检查mysql日期的时间是否存在问题。

date_booked - This is a MySQL date (2014-01-01)

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您当前的查询在日期字符串周围缺少引号,因此它不会按原样运行。

但是要回答你的问题,只需传递一个YYYY-MM-DD格式的有效日期字符串,你的查询就可以了:

$date = $_POST['date'];
// Put date validation code here. I.e. make sure it is in YYYY-MM-DD 
// format, etc. Might as well escape it, too since you aren't using 
// prepared statements.
$sql2 = "SELECT * FROM venue_booking WHERE date_booked = '".$date."' AND venue_id =".$id;

我还应该提一下,您应该切换到使用预准备语句,因为它会使查询中使用用户提供的数据更安全。

这是一个可能有用的example of date validation。如果您需要将日期从一种格式转换为另一种格式,this will show you how

答案 1 :(得分:0)

mktime()返回一个PHP时间戳,这是一个unix时间戳,这是自纪元以来的#34;秒,即19世纪70年1月1日。您无法直接将其与mysql日期字段进行比较。你真的在做什么

WHERE '2014-01-01' = 12345678

尝试

$ts = date('Y-m-d h:i:s', mktime(0,0,0,$month, $day, $year));

$sql = "SELECT ... date_booked = '$ts'";