2012-05-31 104 views
0

是否有可能在我的顯示類似的MySQL查詢中使用if語句?我想爲即將發生的事件獲取一些信息(而不是以前的日期)。如果語句在MySQL查詢與PHP

ini_set('date.timezone', 'America/New_York'); 
    echo $timestamp = date('Y-m-d'); 
    $sql = "select eventID,eventTitle,eventDate from events where eventLocationID = $locationID AND (eventDate > $timestamp) ORDER BY eventDate ASC"; 

編輯 - SQL語句不前,今天濾除日期(它顯示的所有內容)。

例如,爲了確保設置正確,我回顯了時間戳。在我的桌子上,我輸入了兩個日期,一個在今年一月,另一個在今天。

因此,這裏的輸出

2012-05-31 //timestamp, not part of results. just for reference 
    2012-01-10 //first result, however it shouldn't display 
    2012-06-22 //this should be the only result that displays 

回答

6

只需使用where子句:

$date = date('Y-m-d'); 
$sql = " 
    SELECT 
     foo 
    FROM 
     bar 
    WHERE 
     eventLocationId = ... 
     AND eventDate > '$date' 
    ORDER BY 
     eventDate DESC 
"; 

而且,m/d/Y不是MySQL的有效日期格式。它預計Y-m-d


在便箋上不直接關係到你的問題:

我真的想避免這樣做後查詢的if語句

如果過濾在PHP一個結果,這是怎麼回事比使用where子句慢很多倍。數據庫可以快速有效地過濾記錄。而且,使用PHP過濾需要您將所有的結果從MySQL傳輸到PHP(另一個緩慢)。

+0

謝謝,哇,我現在看起來很痛苦。這是漫長的一天! – user1104854

+0

@ user1104854沒問題:) – Corbin