You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP在线目录页码编号:MySQL查询异常求助

问题分析与解决方案

让我来帮你排查这个问题——你的代码里有两个关键错误导致了第一条记录页码异常:

  1. 重复调用mysql_fetch_array()导致结果集丢失
    你在if判断里第一次调用mysql_fetch_array($get_max_page)时,已经把查询结果从结果集中取出,此时结果集指针已经移动到末尾,第二次调用时就无法获取到有效数据,$page_row会变成空值。

  2. SQL别名与后续引用不匹配
    你最新的SQL查询里把最大值的别名设为get_max_page,但后续代码里却尝试获取$page_row['Page'],这个字段名根本不存在,所以得到的是空值,空值加2就变成了2,这就是第一条记录页码为2的直接原因。

修正后的MySQL扩展代码(注意:MySQL扩展已废弃,仅用于兼容旧项目)

// 执行查询,保持别名和原逻辑一致(用Page作为别名)
$get_max_page = mysql_query("SELECT MAX(page_no) AS Page FROM `lots`");
$page_row = mysql_fetch_array($get_max_page);

// 判断是否获取到有效数据
if ($page_row && !empty($page_row['Page'])) {
    $page_no = $page_row['Page'] + 2;
} else {
    $page_no = 12;
}

更推荐的方案:使用MySQLi扩展(MySQL扩展已在PHP 5.5+废弃,PHP 7+移除)

为了代码的安全性和长期兼容性,建议升级到MySQLi:

// 假设你已经通过mysqli建立了数据库连接$conn
$get_max_page = mysqli_query($conn, "SELECT MAX(page_no) AS Page FROM `lots`");
$page_row = mysqli_fetch_assoc($get_max_page);

if ($page_row && !is_null($page_row['Page'])) {
    $page_no = $page_row['Page'] + 2;
} else {
    $page_no = 12;
}

关键修正点说明

  • 只调用一次fetch函数,把结果存储到变量中再进行判断和使用,避免指针移动导致的数据丢失
  • 确保SQL查询的别名和后续代码中引用的字段名完全一致
  • 增加对page_no是否为null的判断,避免空值运算引发的异常

内容的提问来源于stack exchange,提问作者Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:50:16