2014-02-07 38 views
0

我在SQL中的問題選擇這樣的表是這樣的:SQL限制稱道不能正常工作

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

什麼我想要做的,是選擇前5個(在本例中2)這是INT的未來,爲了他們的日期(挑頭最接近5個按摩到現在) 所以這裏是我的SQL查詢

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

(我複製從代碼行) 由於某種原因查詢只選擇第一個,即使它們都適合查詢(當我使用說明另一種選擇)

<?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'子句過濾器,則無論'order by'如何都應該被拾取。 –

回答

0

僅供參考,你要降序排列,不升:

ORDER BY `date` DESC LIMIT 5 

這並不能解釋爲什麼你只獲得兩個中的一個,但我懷疑這可能與您的PHP變量與WHERE條件的關係有問題。

+0

不..我仍然只得到一行(但另一行) – asafg8

+0

您可以發佈設置$ date的代碼嗎?瞭解什麼是評估對我有幫助 - 我不認爲這是SQL語法的問題。此外,您使用的是哪種數據庫引擎?一些DBMS使用keywork TOP代替LIMIT,例如Teradata –

+0

好吧,我會添加它 – asafg8