我想用PHP和MySQL创建一个简单的新闻系统,现在我有一个工作的帖子和阅读系统,但只有一个问题,我希望它显示10个最新消息,但它显示了10个最古老的新闻。
我的问题是:有没有办法让MySQL从表格底部返回结果,或者我必须首先获得帖子的数量,然后将其限制为最后10个帖子?
这是插入(标题和文本被转义,时间是时间(),海报还没有完成):
mysql_query("INSERT INTO news (title, poster, text, time) VALUES ('$newstitle', '1', '$newstext', '$time')") or die(mysql_error());
回到它(addnews回声):
$myqr = mysql_query('SELECT * FROM news LIMIT 10') or die("Error running news query: ". mysql_error());
while($myres = mysql_fetch_array($myqr))
{
addnews($myres['id'], $myres['title'], "admin", date('l jS F Y - H:i:s', $myres['time']), $myres['text']);
}
所以,简而言之:我想向后读数据库,是否可能?
答案 0 :(得分:11)
查看ORDER BY条款。它允许您按列按升序或降序对行进行排序。以下查询将返回10个新闻项,按时间降序排序。
SELECT * FROM news ORDER BY time DESC LIMIT 10
答案 1 :(得分:2)
简单,只需在SQL中添加“ORDER BY”子句,例如
SELECT * FROM news ORDER BY time DESC LIMIT 10
答案 2 :(得分:1)
您需要修改查询以按创建日期排序。
之类的东西SELECT * FROM news order by time DESC LIMIT 10
应该适合你。我认为值得注意的是,如果您没有指定Order by子句,则无法保证返回结果的顺序。现在,你恰好在它们被提升时插入它们,但你无法安全地认为它总是如此。
答案 3 :(得分:0)
假设id是主键:
SELECT * FROM new ORDER BY id DESC LIMIT 10
答案 4 :(得分:0)
使用ORDER BY子句。
答案 5 :(得分:0)
难道你不能简单地在LIMIT 10之前按时间顺序降序吗?
答案 6 :(得分:0)
使用
SELECT * FROM news ORDER BY time DESC LIMIT 10
答案 7 :(得分:0)
您也可以使用
SELECT TOP 10 FROM news ORDER BY time DESC
我相信。但不确定'top'子句是否只是SQL Server。