【发布时间】:2009-03-02 19:35:29
【问题描述】:
我正在使用 php,我想做一个下一步按钮,该按钮可以进入接下来的 10 条记录(例如当您使用 stackoverflow 浏览问题时) 我不知道该怎么做,但我想用 Top n 记录来做?你认为这是个好主意吗?有什么建议吗?
【问题讨论】:
-
您是指 MS SQL Server 还是 MySQL?两者之间的操作方式非常不同。
标签: php sql-server
我正在使用 php,我想做一个下一步按钮,该按钮可以进入接下来的 10 条记录(例如当您使用 stackoverflow 浏览问题时) 我不知道该怎么做,但我想用 Top n 记录来做?你认为这是个好主意吗?有什么建议吗?
【问题讨论】:
标签: php sql-server
至于在 PHP 中执行此操作,您可以轻松地使按钮发送 POST 或 GET 请求以获取起始金额。例如,用户会发出初始请求,这只是yoursite.com/search.php,然后下一个按钮会将他们发送到具有相同搜索条件的同一页面,仅发送一个附加字段“开始”,(即yoursite.com/search.php?start=10) .在代码中,您可以简单地检查它:
if(isset($_POST['start'])) {
//code to add to the search string to start at $_POST['start']
}
编辑 1: This article 是我能找到的关于如何复制 MySQL 的 LIMIT 函数的最佳方法。此外,this one 有一个更明确的查询可供参考,但想法相同。
【讨论】:
我知道在 MySQL 中你可以使用 LIMIT X, Y 其中 X 是返回的下限,Y 是上限。因此,如果您想返回 10-20,您将使用 LIMIT 10、20。不确定 MS-SQL 等价物是什么。
【讨论】:
在 mysql 中 mssql 没有类似 LIMIT 的东西吗?所以你可以这样做:
select xxx from yyy LIMIT 0,10
对于前 10 个结果,然后为接下来的 10 个结果执行 LIMIT 10,20,等等。
【讨论】:
你可以使用 MySQL 的限制
设置一个变量叫:
$limit = 10;
$pl = $_GET["page"] * $limit;
if(!isset($_GET["page"]) || $_GET["page"] == 1)
{
$pl = 0;
}
在你的查询中做
$sql = sprintf("SELECT * FROM table LIMIT %d,%d"
mysql_real_escape_string($pl),
mysql_real_escape_string($limit));
顺便说一句,这是凭记忆,但我认为它有效。
【讨论】:
这对你有帮助吗?
$count=$_POST[page]*10;
【讨论】:
对于 MySQL:
$rowsPerPage = 10;
$offset = ((int)$_GET['page'] - 1) * $rowsPerPage;
$result = mysql_query(
sprintf('select xxx from yyy LIMIT %d,%d', $offset, $rowsPerPage)
);
【讨论】: