PHP/MySQL 分页

6

我是php和sql的新手,关于如何实现sql查询,我有一个小问题:

  • 例如从数据库中取出5个条目,将它们插入到第一页(1-5)
  • 然后从同一数据库中取出下5个条目,并将它们插入到另一页(5-10),以此类推 :)

谢谢)


可能是MySQL没有双重查询的分页?的重复问题。 - OMG Ponies
3个回答

5
SELECT col FROM table LIMIT  0,5; -- First page, rows 1-5
SELECT col FROM table LIMIT  5,5; -- Second page, rows 6-10
SELECT col FROM table LIMIT 10,5; -- Third page, rows 11-15

阅读 MySQL SELECT 帮助页面上的 LIMIT 部分。如果您想显示可用行的总数,可以进行额外计数或使用 ROW_COUNT 函数。


0

有几种方法可以做到这一点,我认为最快的性能是以下方法:

$ItemsPerQuery = 5;
$CurrentPage = 0; //here you can add the current site through $_GET array or other ways, but don't forget to use mysql_real_escape_string(), because of mysql injection 

$Query = mysql_query("SELECT * FROM table LIMIT ".($ItemsPerQuery*$CurrentPage).",".$ItemsPerQuery);

while($row = mysql_fetch_assoc($query))
{
    echo $row['column_name'];
}

你应该使用以下内容:


是的,谢谢。 我脑海中有类似的想法,但不知道如何以适当的方式实现它。 - user313216
这不对,第一页不会显示前5个条目,起始限制应为0而不是15,总共应为($ItemsPerQuery$CurrentPage - $ItemsPerQuery)。 - cypher
嗯,没错 :) $CurrentPage 应该是0,因为0*5=0。抱歉。 - therufa
请注意 SQL 注入,特别是当变量来自于 $_GET 或任何其他用户输入。如果 Oden 想要使用字符串拼接来构建 SQL 查询,请使用 real_escape_string 函数或链接。 - Konerak

0
如果您的查询结果不是太多,请考虑使用JQuery和Tablesorter函数进行分页。它可以在格式正确的HTML表格上进行分页、排序等操作,无需其他查询变量。这比全面使用PHP进行分页要简单得多,用户体验也更好。 我个人最喜欢的示例在这里:http://datatables.net/ 它可能不能完全满足您的需求,但对许多应用程序来说很酷。如果您这么做了,请不要忘记使用thead和tbody格式化您的表格,以便它可以正确地获取表格元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接