2012-07-09 83 views
0

我正在使用下面的代码尝试回显MySQL表中的最新5个条目,但我无法看到如何限制结果数量,任何人都可以帮我解决通过允许我将结果数量限制为5行?在MySQL PDO查询中限制FOREACH

<table> 
<?php 
require_once($_SERVER['DOCUMENT_ROOT'] . "/resources/pdo.php"); 
$q = "SELECT * FROM `content` ORDER BY `id`"; 
$query = $pdo->query($q); 
$data = array_reverse($query->fetchAll()); 
foreach ($data as $row) { 
echo "<tr><td>{$row['title']}</td><td>{$row['id']}</td></tr>"; 
} 
?> 
</table> 

谢谢!

请注意,我是PHP新手,我需要帮助,所以如果这个问题没有用,请帮助我,因为我刚刚开始这个。

+0

你问过这个谷歌?顺便说一下,“LIMIT 5”将起作用。 – Leri 2012-07-09 12:00:24

+0

Google√IRC.PHPFREAKS√他们都给出了正确的答案,但是在这里,我发现在限制5之后应该有一个DESC,谢谢PLB! – user115422 2012-07-09 12:09:02

回答

2

order by id desc摆脱array_reverse的和limit 5封顶返回的结果的数量。

$q = "SELECT * FROM `content` ORDER BY `id` DESC LIMIT 5"; 
... 
$data = $query->fetchAll(); 

作为一个全球性准则:当编写查询尝试制定他们以这样一种方式中的结果是接近你所需要的可能,即没有额外的排序或筛选操作之后。具有你不打算使用DBSERVER发送数据

  1. 是不必诉诸于网络服务器/数据重新过滤浪费
  2. 成本Web服务器性能,在大结果集的情况下,它可以花费大量的的内存
+0

感谢,是的,改变代码一样,效果最好 – user115422 2012-07-09 12:05:13

3

使用LIMIT字:

SELECT * FROM `content` ORDER BY `id` DESC LIMIT 5 
+0

谢谢@ ftom2但是当我这样做时,它不是最后5行出现,这是第一个,我想要5个最新的条目。 – user115422 2012-07-09 12:01:36

+0

在''id''之后加上'DESC'。 – Leri 2012-07-09 12:02:56

+0

你的答案是接近正确的,但应该有一个DESC,我想所有的人,这就是我的结论 – user115422 2012-07-09 12:06:49

4

使用LIMIT子句中您的SQL查询:

SELECT * FROM `content` ORDER BY `id` DESC LIMIT 5 

the manual

LIMIT子句可以被用来限制数量由SELECT语句返回的行。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(除了使用预准备语句时)。

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。的初始行的偏移量为0(未1):

+0

是的,这个作品:。

\t query($ q); $ data = $ query-> fetchAll ); // $数据= array_reverse($查询 - >使用fetchall()); 的foreach($数据作为$行){ 回声“​​{$行[ '标题']}​​{$行[” ID为“]}“; } >
user115422 2012-07-09 12:04:09

1

从数据库中提取数据时,通常通过MySQL查询设置LIMIT,而不是在读取返回的数据时计算循环迭代。

$q = "SELECT * FROM `content` ORDER BY `id` LIMIT 5"; 
+0

谢谢,但就我所指出的,它应该包括DESC感谢反正答案?。 – user115422 2012-07-09 12:05:41