限制MySQL PDO查询中的FOREACH

时间:2012-07-09 11:56:42

标签: php mysql pdo

我正在使用下面的代码尝试回显MySQL表上的最新5个条目,我不能,但似乎能够计算出如何限制结果的数量,任何人都可以通过允许我限制结果数为5行?

<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的新手,我需要帮助,所以如果这个问题没用,请帮助我,因为我刚刚开始这个。

4 个答案:

答案 0 :(得分:4)

在SQL查询中使用LIMIT子句:

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

来自the manual

  

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。

     

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

答案 1 :(得分:3)

使用LIMIT字:

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

答案 2 :(得分:2)

order by id desc删除array_reverse和limit 5以限制返回结果的数量。

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

作为一个全局指南:在编写查询时,尝试以一种尽可能接近您需要的方式来表达它们,即之后没有额外的排序或过滤操作。

  1. 让dbserver发送您不会使用的数据是一种浪费
  2. 必须在网络服务器上求助/重新过滤数据会降低网络服务器的性能,而在大型结果集的情况下,它也会花费大量内存

答案 3 :(得分:1)

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

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