我正在使用this calendar插件使用mySQL数据库显示我的客户端日程。
日历使用start
和end
UNIX时间戳向我的脚本发出请求,如下所示:
/getevents.php?start=1262332800&end=1265011200&_=1263178646
//That last piece of data is to prevent caching.. apparently
在我的脚本中,我将UNIX时间戳转换为mySQL datetime
对象,如下所示:
$start = $_GET['start'];
$end = $_GET['end'];
$start = gmdate("Y-m-d H:i:s", $start);
$end = gmdate("Y-m-d H:i:s", $end);
printf($start.".....".$end);
这正确地打印了如下内容(当我导航到2012年9月时):
2012-08-26 04:00:00.....2012-10-07 04:00:00
现在我想从数据库中选择属于这些日期的所有事件。我的数据库只有1行,start
字段是今天的日期:
id start end
10 2012-09-05 20:27:00 0000-00-00 00:00:00
但是使用以下SQL语句,我没有得到结果。我试图将>
反转为<
只是为了它的地狱,但仍然没有。我根本没有收到任何错误,只是没有结果。
$sql = "SELECT * FROM all_events WHERE DATEDIFF('$start', 'start') > 0";
$result = mysql_query($sql, $link) or die(mysql_error());
echo "Rows:".mysql_num_rows($result);
正如您所看到的,现在我只是检查事件的start
是否大于日历日期范围的start
..即8月26日是{{1} 9月份。
我没有看到任何错误......请帮忙!我正在撕扯我的头发!
答案 0 :(得分:1)
不要将single quotes
用于列名,而是使用backticks
。试试这个
SELECT * FROM all_events WHERE DATEDIFF(`start`, '$start') > 0
答案 1 :(得分:1)
我建议使用FROM_UNIXTIME
和准备好的语句:
$stmt = $mysqli->prepare("SELECT * FROM all_events WHERE DATEDIFF(FROM_UNIXTIME(?), start) > 0");
$stmt->bind_param($_GET['start']);
mysql_
函数正在deprecated