2012-12-08 120 views
1

我正在使用PHP搜索工具,它正在從數據庫中檢索數據。它有效,但現在我想按最新日期對結果進行排序。 created是存儲數據庫時間戳的列的名稱。按日期排序

這裏是我的代碼:

$res = mysql_query("SELECT * FROM book WHERE MATCH 
(title,cat_number,isbn,issn,created,subject) AGAINST ('$q' $mode) LIMIT 50", $db); 

$list = array(); 
while($row = mysql_fetch_assoc($res)) 
{ 
    $list[] = $row; 
} 
mysql_free_result($res); 
+1

** Heads up!** PHP在未來的版本中會棄用和刪除mysql_'系列的函數。請藉此機會切換到[PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli)。 – Charles

+0

檢查時間戳的限制:http://dev.mysql.com/doc/refman/5.1/en/datetime.html – alditis

回答

2

添加ORDER BY created DESC到您的SQL語句。

+0

它仍然沒有工作。出於某種原因,它不會通過創建來對其進行排序。任何其他想法? – user1887387

1

您可以更新您的查詢,看起來像這樣:

$res = mysql_query("SELECT * FROM book WHERE MATCH (title,cat_number,isbn,issn,created,subject) AGAINST ('$q' $mode) ORDER BY created DESC LIMIT 50", $db); 

在另一方面,你應該使用庫MySQLi或PDO對MySQL的命令,MySQL的命令現在已廢棄。

+0

它仍然沒有工作。出於某種原因,它不會通過創建來對其進行排序。任何其他想法? – user1887387

+0

你在布爾模式下運行嗎?看看這個小提琴,正確排序:http://sqlfiddle.com/#!2/53847/1 此外,什麼數據類型是創建列? – zongweil

+0

是的,我正在布爾模式下運行它。創建的colum中的數據類型是由數據庫分配的時間戳。 – user1887387