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=leaderboardに基づいてバナー広告を表示するよう DB にクエリを実行します。それは完全に機能します。

ただし、バナーの開始日と終了日を確認できるように、「BETWEEN」を含めたいと思います。

繰り返しますが、このクエリが実行され、バナーが表示されます! しかし...「BETWEEN」を追加すると、「Type」に従わなくなりました。これで、長方形とリーダーボードが表示されます。クレイジーなのは、このクエリを実行すると phpMyAdmin にあることです。完全に機能します。

4

1 に答える 1

2

現在の日付を比較する必要があり、次にNOW()確認する必要があります。

SELECT * 
FROM banners 
WHERE Type=:type 
    AND NOW() BETWEEN Start AND End 
ORDER BY RAND() 
LIMIT 1
于 2013-03-27T18:53:02.533 に答える