2012-12-08 123 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