-2

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

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

当用户在搜索框中输入要查询的名称时,我希望他们能够单击表分页,其中每个分页仅查询 100 个项目,因此 'page' 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 等...?

4

2 回答 2

1

尝试在查询中使用“ LIMIT

例如:

$query. "LIMIT 0,100"

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

于 2012-04-10T15:43:44.327 回答
1

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

使用 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();
于 2012-04-10T15:44:35.717 回答