Php 分页的mysql结果
查询是:Php 分页的mysql结果,php,mysql,pagination,Php,Mysql,Pagination,查询是: SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), ( ($curr_page * 5) + 5 ) 其中,$curr\u page是一个php变量,它从$\u GET['page'] 我想进行分页(每页5条新闻),但我不知道为什么mysql会返回额外的值 在第一页,结果ok:$curr\u page=0 问题是: SELECT * FROM `news` ORDER BY `id` LIMIT 0, 5 但是在第二
SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), ( ($curr_page * 5) + 5 )
其中,$curr\u page
是一个php变量,它从$\u GET['page']
我想进行分页(每页5条新闻),但我不知道为什么mysql会返回额外的值
在第一页,结果ok:$curr\u page=0
问题是:
SELECT * FROM `news` ORDER BY `id` LIMIT 0, 5
但是在第二页,查询的结果是添加额外的新闻,10而不是5
第二页上的查询:
SELECT * FROM `news` ORDER BY `id` LIMIT 5, 10
怎么了?为什么结果有10个值而不是5个值
谢谢大家! 看这个例子,第一个参数是要开始的行,第二个参数是要显示的结果数
mysql> select * From t1 limit 0,5;
+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+--------------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | ED | CHASE | 2006-02-15 04:34:33 |
| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 |
| 5 | JOHNNY | LOLLOBRIGIDA | 2006-02-15 04:34:33 |
+----------+------------+--------------+---------------------+
5 rows in set (0.00 sec)
mysql> select * From t1 limit 5,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 6 | BETTE | NICHOLSON | 2006-02-15 04:34:33 |
| 7 | GRACE | MOSTEL | 2006-02-15 04:34:33 |
| 8 | MATTHEW | JOHANSSON | 2006-02-15 04:34:33 |
| 9 | JOE | SWANK | 2006-02-15 04:34:33 |
| 10 | CHRISTIAN | GABLE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
mysql> select * From t1 limit 10,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 11 | ZERO | CAGE | 2006-02-15 04:34:33 |
| 12 | KARL | BERRY | 2006-02-15 04:34:33 |
| 13 | UMA | WOOD | 2006-02-15 04:34:33 |
| 14 | VIVIEN | BERGEN | 2006-02-15 04:34:33 |
| 15 | CUBA | OLIVIER | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
在您的例子中,第二个参数是静态的,第一个参数
($curr\u page*5)
看这个例子,第一个参数是要开始的行,第二个是要显示的结果数
mysql> select * From t1 limit 0,5;
+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+--------------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | ED | CHASE | 2006-02-15 04:34:33 |
| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 |
| 5 | JOHNNY | LOLLOBRIGIDA | 2006-02-15 04:34:33 |
+----------+------------+--------------+---------------------+
5 rows in set (0.00 sec)
mysql> select * From t1 limit 5,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 6 | BETTE | NICHOLSON | 2006-02-15 04:34:33 |
| 7 | GRACE | MOSTEL | 2006-02-15 04:34:33 |
| 8 | MATTHEW | JOHANSSON | 2006-02-15 04:34:33 |
| 9 | JOE | SWANK | 2006-02-15 04:34:33 |
| 10 | CHRISTIAN | GABLE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
mysql> select * From t1 limit 10,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 11 | ZERO | CAGE | 2006-02-15 04:34:33 |
| 12 | KARL | BERRY | 2006-02-15 04:34:33 |
| 13 | UMA | WOOD | 2006-02-15 04:34:33 |
| 14 | VIVIEN | BERGEN | 2006-02-15 04:34:33 |
| 15 | CUBA | OLIVIER | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
在您的情况下,第二个参数是静态的,第一个参数
($curr\u page*5)
LIMIT语句的语法是:
限制[开始行],[计数]
因此,您的代码应该是:
SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), 5
想要添加,但不知道表的结构:通常“新闻”按发布日期而不是id排序。如果表中有“发布日期”字段,则它比id更适合排序列,这对用户来说毫无意义。假设id是自动递增的,您输入文章的顺序可能并不总是反映正式发布日期
文档
- MySQL的SELECT语法-
- LIMIT语句的语法是:
限制[开始行],[计数]
因此,您的代码应该是:
SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), 5
想要添加,但不知道表的结构:通常“新闻”按发布日期而不是id排序。如果表中有“发布日期”字段,则它比id更适合排序列,这对用户来说毫无意义。假设id是自动递增的,您输入文章的顺序可能并不总是反映正式发布日期
文档
- MySQL的SELECT语法-
限制5,5
。。。第二个数字是要返回的行数,而不是位置。为什么要使用$curr\u page*5+5而不是5?您希望限制5,5
。。。第二个数字是要返回的行数,而不是位置。