在数据库查询中获取行时使用 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 子句?的主要内容,如果未能解决你的问题,请参考以下文章