2013-03-27 2 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 = leaderboard. Он работает отлично.PDO Подготовленное заявление Запрос не следует WHERE

Однако я хочу включить «МЕЖДУ», чтобы он мог проверить дату и дату начала баннера.

Опять же, этот запрос запускается - и отображаются баннеры! Однако ... Когда я добавил «МЕЖДУ», он больше не следовал «Тип». Теперь он показывает прямоугольники AND leaderboards. Что с ума, в phpMyAdmin, когда я запускаю этот запрос, он работает отлично.

+0

Текущая дата должна быть между датой начала и окончания даты? – hjpotter92

+0

в таблице баннеров есть столбец «Начало и конец». Начало = 2013-03-22 \t Конец = 2013-12-31 – Greg

ответ

2

Необходимо сравнить текущую дату, необходимо, чтобы у вас есть NOW().

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

Это сделало. Благодарю. – Greg

+0

@Greg И что может быть # 80 до # 85? – hjpotter92

Смежные вопросы