2012-05-31 139 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