【问题标题】:Limiting a result using PHP, without using LIMIT clause when fetching rows in database query?在数据库查询中获取行时使用 PHP 限制结果,而不使用 LIMIT 子句?
【发布时间】: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 标记您的问题(我已经添加了标签)。

标签: php sql oracle limit


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多