【问题标题】:Query a paginated table of items #fixnum items at a time, using PHP and MySQL使用 PHP 和 MySQL 一次查询 #fixnum 个项目的分页表
【发布时间】:2012-04-10 23:53:37
【问题描述】:

所以我试图找到一种方法来从查询中返回一个非常大的结果集,并将其显示为网页上的分页表。

例如,如果我试图从我的数据库中返回 1,000 个项目,我想将它们显示在一个分页表中,一次 100 个,并且只查询这 100 个项目。

当用户在搜索框中输入要查询的名称时,我希望他们能够点击表格分页,其中每个分页仅查询 100 个项目,因此“页面”1 显示项目 1-100 , 'page' 2 显示项目 101-200 等...

我想这样做是因为查询一个非常大的结果集然后只对显示进行分页非常慢。

有人对如何使用 PHP 和 MySQL 执行此操作有任何建议吗?

我的分页工作正常,我只是不知道如何运行我的查询。

这是我现在的查询:

 mysql_query("SELECT name, age, address FROM users  WHERE name='$name' AND domain_name='$age' LIMIT 100", $localDB);

如何使用此查询仅返回结果集 101-200、201-300 等...?

【问题讨论】:

  • 嘿,所以在我的查询中,我按 DESC 分组并限制 100,但我不知道如何返回结果集 101-200。

标签: php mysql pagination


【解决方案1】:

如果您已经知道分页的数量(数字),那么只需在您的 SQL 中添加 limit

使用 PDO 的示例:

//url passed has a token of &page=[digit]
//Do prior error checking to verify $_GET/POST has a page variable, and it is a digit.

if ($page < 1) { $page = 1;}

$offset=$limit*($page-1); // Will give an offset of 100 on page 1, or 200 on page 2, etc


$sql = "SELECT `items` FROM items_db WHERE itemno=:itemno LIMIT :offset, 100";

$sql_query = $conn->prepare($sql); // Existing connection
$sql_query->bindParam(':itemno',$itemno, PDO::PARAM_INT);
$sql_query->bindParam(':offset', $offset, PDO::PARAM_INT);

$sql_query->execute();

【讨论】:

    【解决方案2】:

    尝试在查询中使用“LIMIT

    例如:

    $query. "LIMIT 0,100"
    

    这将帮助您限制查询结果。您可以根据自己的要求进行限制,而不是获取所有行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2012-06-06
      • 2014-06-09
      • 1970-01-01
      相关资源
      最近更新 更多