首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PHP 分頁查詢僅第一頁正常、翻頁報警告的 SQL 拼接排查

     編輯:程式設計綜合問答

現象

首頁顯示正常,點擊「下一頁」/頁碼跳轉報警告,數據不顯示。

核心排查:輸出實際執行的 SQL

在 $recordSql 拼接後、mysql_query 前加入:


$recordSql = $sql1 . " limit " . (($page-1)*$pagesize) . "," . $pagesize;
echo "DEBUG SQL: " . $recordSql . "
"; // 關鍵:瀏覽器查看實際 SQL // $result = mysql_query($recordSql);

常見錯誤原因

  1. $page 未經 intval 驗證,注入風險且可能非數字導致 SQL 語法錯誤。
  2. LIMIT offset, count 中 offset 計算錯誤 (如負數)。
  3. mysql_query 失敗返回 false,後續 mysql_fetch_array 報警告,但代碼未判斷 $result 真偽。
  4. SQL 中表名/列名使用保留字未加反引號 `。

修正模板


$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$offset = ($page - 1) * $pagesize;
$recordSql = "SELECT * FROM `tblreport` WHERE `is_modify`=0 ORDER BY `sid` DESC LIMIT {$offset}, {$pagesize}";
$result = mysql_query($recordSql);
if (!$result) {
    die('SQL Error: ' . mysql_error() . '
SQL: ' . $recordSql); } // 正常處理 $result

重要提醒

  • mysql_* 函數**已棄用/移除** (PHP 7+),請遷移至 mysqli 或 PDO 使用預處理語句防注入。
  • 分頁邏輯建議封裝為工具類,統一處理邊界、URL 生成。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved