2012-09-06 17 views
0

我使用this calendar插件來顯示我的客戶的議程使用MySQL數據庫。 日曆POST到我的劇本的請求與startend UNIX時間戳是這樣的:如何使用DATEDIFF選擇行?

/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日是start的九月份。

我沒有看到任何錯誤...請幫助!我正在把我的頭髮撕掉!

+0

「SELECT * FROM WHERE DATEDIFF($ end,$ start)> 0」即某個正數 –

回答

1

不要使用single quotes列名,而是使用backticks。嘗試這個

SELECT * FROM all_events WHERE DATEDIFF(`start`, '$start') > 0 
+0

* facepalm *當事情很簡單時,我討厭它!謝謝! – Snailer

+0

@Snailer你現在一定需要睡覺:)不客氣! –

1

我會建議使用FROM_UNIXTIME和準備的語句,像這樣:

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

mysql_功能正在deprecated

+0

我知道'mysql_'函數已被棄用..我嘗試使用'mysqli_',這隻會嚴重影響我的代碼。我會嘗試讓東西至少爲我的客戶運行,然後擔心更新。謝謝你的信息! – Snailer