2013-03-27 51 views
0
/** 
* Query the database, and grab a random banner. 
* 
* @return object Database row. 
*/ 
protected function getRandomBanner() 
{ 
    try 
    { 
     $stmt = $this->db->prepare("SELECT * FROM banners WHERE Type=:type BETWEEN Start AND End ORDER BY RAND() LIMIT 1"); 
     $stmt->execute(array(':type' => $this->type)); 
     return $stmt->fetch(PDO::FETCH_OBJ); 
    } catch (PDOException $e) { 
     echo $e->getMessage(); 
    } 
} 

此代码是一个类的一部分。它根据简单查询字符串查询数据库以显示横幅广告display_banner.php?banner_type =排行榜。它完美的作品。PDO预处理语句查询不按WHERE

但是,我想包含“BETWEEN”,因此它可以检查横幅开始日期和结束日期。

同样,这个查询运行 - 和横幅显示!但是...当我添加“BETWEEN”时,它不再遵循“类型”。现在,它显示矩形和排行榜。什么是疯狂的,是在phpMyAdmin,当我运行这个查询时,它完美的工作。

+0

当前日期应该在开始日期和结束日期之间? – hjpotter92 2013-03-27 18:51:05

+0

在横幅表中,有一个开始和结束列。启动= 2013年3月22日结束\t 2013-12-31 =那 – Greg 2013-03-27 18:52:46

回答

2

你需要比较当前日期,则必须有NOW()对证。

SELECT * 
FROM banners 
WHERE Type=:type 
    AND NOW() BETWEEN Start AND End 
ORDER BY RAND() 
LIMIT 1 
+0

做到了。谢谢。 – Greg 2013-03-27 18:56:46

+0

@Greg可以从#80到#85的行是什么? – hjpotter92 2013-03-27 19:00:14