2014-02-07 3 views
0

у меня есть проблема в SQL SELECT, так что таблица что-то вроде этого:SQL предел Commend не работает должным образом

id uid content   date  type 
2 1 lorem ipusem#1 1391817600 1 
3 1 lorem ipusem#2 1391899005 1 
... 

то, что я хочу сделать, это выбрать первый 5 (в данном случае 2) который ИНТ будущего и заказать их по дате (чтобы выбрать первый ближайшие пять массажей сейчас) так вот мой SQL запрос

('SELECT `content` FROM `mvc` WHERE type = 1 and `date` > '.$date.' ORDER BY `date` ASC limit 5') 

(я скопировал строку из кода) по какой-то причине в запрос выбирает только первый, хотя оба они подходят к запросу (Когда я использую Desc другой выбран)

<?php 
class getAnnounc { 
    private $db; 
    private $raw; 
    public function getAnnounc($database){ 
     $this-> db = $database; 
     $this->getRaw(); 
    } 
    private function getRaw(){ 
     $date = time(); 
     $this->raw = $this->db->query('SELECT `content` FROM `mvc` WHERE type = 1 and `date` > '.$date.' ORDER BY `date` DESC LIMIT 5')or die(mysqli_error()); 
     $this->raw = $this->raw->fetch_assoc(); 
     echo var_dump($this->raw); 
    } 
} 
header('Content-Type: text/html; charset=utf-8'); 
$db = new mysqli('localhost','root','','ortMallot') or mysqli_error(); 
$db->query("SET NAMES 'utf8'"); 
new getAnnounc($db); 
+2

@JonasT. , , 'limit 5' отлично подходит для этой проблемы. –

+0

Нет, это ничего не меняет ... – asafg8

+0

Я подозреваю, что проблема заключается в обработке обработки результатов. Если две строки передают фильтр 'where' clause, то оба должны быть подняты независимо от' order by'. –

ответ

0

FYI, вы хотите убывающем порядке, а не по возрастанию:

ORDER BY `date` DESC LIMIT 5 

Это не объясняет, почему вы получаете только один из двух , но я подозреваю, что может возникнуть проблема с вашими переменными PHP-переменной с условием WHERE.

+0

нет .. я все еще получаю только одну строку (но другую строку) – asafg8

+0

Можете ли вы опубликовать код, который устанавливает $ date? Было бы полезно узнать, что это оценивает - я не думаю, что это проблема с вашим синтаксисом SQL. Кроме того, какой механизм БД вы используете? Некоторые СУБД используют ключевое слово TOP вместо LIMIT, например. Teradata –

+0

ОК я добавлю его – asafg8

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