在数据库查询中获取行时使用 PHP 限制结果,而不使用 LIMIT 子句?

Posted

技术标签:

【中文标题】在数据库查询中获取行时使用 PHP 限制结果,而不使用 LIMIT 子句?【英文标题】:Limiting a result using PHP, without using LIMIT clause when fetching rows in database query? 【发布时间】:2013-06-12 16:35:02 【问题描述】:

我有一个 SQL 表,它包含大约 100 行。

我在 php 中使用SELECT * FROM table 选择它。

我没有使用偏移量或限制。我现在的问题是,有没有办法只使用 PHP 来操作返回的结果以仅显示表中的 24 行?

我应该尝试什么?

【问题讨论】:

array_splice?你试过吗?最好的方法是限制在 SQL 范围内。 foreach($result as $k => $row)if($k FWIW,可以理解有人可能会认为您使用的是 mysql(或 PostgreSQL 或 SQLite),因为您提到了“limit”和“offset”,但没有用 Oracle 标记您的问题(我已经添加了标签)。 【参考方案1】:

从数据库中获取行的一般格式如下:

while ($row = mysql_fetch_assoc($rs)) 
    echo $row['column_name'] . "\n";

你会想这样修改它:

$limit = 24;
while ($limit-- && $row = mysql_fetch_assoc($rs)) 
    echo $row['column_name'] . "\n";

【讨论】:

我没有使用 mysql..it's oracle... 假设这个 $variable 已经拥有我需要的所有数据,但计数是 100...那么如何只显示其中的 24 项对象? mysql_* 的示例?无论如何,这个概念仍然可以正常工作,+1。 我刚刚搜索了“php mysql example”并复制了我看到的第一件事。 我刚才说..我有这个 $variable 有我需要的所有数据..我没有使用 mysql..我使用 oracle..我没有使用 LIMIT获得 100 个结果的子句...有没有办法仅使用 PHP 仅显示该结果的 24 个对象?【参考方案2】:

好吧,我想既然添加了oracle 标签,我将添加oracle 答案。

$rows = array(row, row, row, ...); // from oracle sql results
$first_24_rows = array_slice($rows, 0, 24);

【讨论】:

我有一个不同的解决方案已经解决了这个问题......但我会选择你的答案作为最佳答案......不过谢谢【参考方案3】:

您可以在 oracle SQL 本身中控制返回的行数。在 where 子句中添加这样的内容:

和 rownum

【讨论】:

以上是关于在数据库查询中获取行时使用 PHP 限制结果,而不使用 LIMIT 子句?的主要内容,如果未能解决你的问题,请参考以下文章

查询只返回一行(PHP / MYSQL)

使用 LIKE 运算符而不限制结果

PHP MSSQL:查询返回无行时如何显示输出

如何在遍历使用 mysqli_use_result 返回的行时执行 mysqli 查询? (PHP)

在 PHP 中限制 MS Access 中的查询

PHP/mysql:使用数组查询 MySQL 并在数组中获取结果