0

我正在使用这个日历插件来使用 mySQL 数据库显示我的客户的议程。日历使用UNIX 时间戳向我的脚本发出请求,start如下所示:end

/getevents.php?start=1262332800&end=1265011200&_=1263178646
//That last piece of data is to prevent caching.. apparently

在我的脚本中,我将 UNIX 时间戳转换为 mySQLdatetime对象,如下所示:

$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 日是start9 月份。

我没有看到任何问题...请帮助!我要扯头发了!

4

2 回答 2

1

不要single quotes用于列名,而是使用backticks.try this

SELECT * FROM all_events WHERE DATEDIFF(`start`, '$start') > 0
于 2012-09-06T01:20:25.573 回答
1

我建议使用FROM_UNIXTIME和准备这样的语句:

$stmt = $mysqli->prepare("SELECT * FROM all_events WHERE DATEDIFF(FROM_UNIXTIME(?), start) > 0"); 
$stmt->bind_param($_GET['start']);

mysql_功能被弃用

于 2012-09-06T01:23:22.653 回答