2013-03-27 74 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