根本原因是 phpmyadmin 5.2 的 pma_token 机制在分页链接中未被正确继承,导致每次点击「下一页」都触发新会话、重置分页状态,?pos=50 参数实际未生效。
为什么查询结果分页跳转后总是回到第一页?
这不是浏览器缓存,也不是你点错了——根本原因是 phpmyadmin 5.2 的 pma_token 机制在分页链接中未被正确继承,导致每次点击「下一页」都触发新会话,重置分页状态。你在地址栏看到的 ?pos=50 参数实际没生效,后台压根没收到它。
- 用 Chrome DevTools 的 Network 面板抓包,点「下一页」时观察请求 URL:如果里面没有
token=xxx或pos=xxx,说明分页链接生成失败 - 检查
config.inc.php中是否误设了$cfg['UseHttps'] = true但服务器实际走 HTTP——这会导致 token 签名校验失败,分页参数被丢弃 - 若启用了宝塔面板的「强制 HTTPS」或 Nginx 的
add_header Strict-Transport-Security,但 phpMyAdmin 访问地址仍是http://,token 会被浏览器静默丢弃
分页显示条数不生效(比如设了 100 条却只显示 30)
表面上是「每页显示」下拉框失效,实质是 $cfg['MaxRows'] 被更高优先级配置覆盖,或 MySQL 返回结果集被 PHP 截断。
- 确认
config.inc.php中设置了$cfg['MaxRows'] = 100;,且该行**不在任何 if 条件块内**(常见错误:被包在if (PMA_IS_WINDOWS) { ... }里) - 检查 PHP 的
memory_limit是否过低(128M是底线),MaxRows越大,phpMyAdmin 加载整页数据时内存消耗越高,超限就自动降回默认值 - MySQL 层面:执行
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 0,100;后立刻跟SELECT FOUND_ROWS();,如果返回值远小于预期,说明表有大量被过滤的行,不是分页问题而是 WHERE 条件太宽
点击页码后报错 #1064 或空白页
典型症状:点第 5 页时 URL 变成 ?pos=400&token=xxx&sql_query=...,然后整个页面白屏或弹出 SQL 语法错误。这是 sql_query 参数在分页重构造时被截断或注入非法字符。
- 禁用所有浏览器插件(尤其广告屏蔽类),它们可能篡改 URL 中的
sql_query值 - 在「设置」→「SQL 查询」里关闭
Allow interrupting of long running queries——该选项开启时,分页会尝试带中断逻辑拼接 query,极易出错 - 避免在查询框里写含换行、单引号、反斜杠的复杂语句;如必须用,先在「SQL」页顶部勾选
SQL template,再粘贴,让 phpMyAdmin 自动转义
移动端分页按钮错位或不可点击
和导航栏一样,分页控件的 CSS 在小屏下没做响应式处理:.pageselector 容器固定宽度 + float 布局,导致按钮挤成一团或超出视口。
- 编辑
phpmyadmin/css/custom.css,追加以下规则(需配合$cfg['CustomCSS'] = 'custom.css';):
@media (max-width: 768px) {
.pageselector {
display: flex !important;
flex-wrap: wrap !important;
justify-content: center !important;
}
.pageselector a, .pageselector span {
margin: 4px !important;
padding: 6px 10px !important;
font-size: 14px !important;
}
}
注意:不要删掉原有 .pageselector 规则,只用媒体查询覆盖;!important 必须加,否则 common.css 里的 float:left 仍会生效。
分页异常往往不是单一配置问题,而是 token、PHP 内存、MySQL 返回行为、CSS 渲染四层叠加的结果。修完记得清空浏览器 cookie 和宝塔面板的 OPcache 缓存,否则旧 token 还在起作用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











