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

正確理解 PHP 錯誤訊息:解析錯誤、MySQL 錯誤、除錯技巧

     編輯:PHP 綜合知識

編譯器工作機制

PHP 編譯器遇到第一個錯誤即停止,報告該行(或看似無關的行)。錯誤行號往往具有誤導性,因為編譯器需解析多行才能確認語法無效。

常見錯誤類型與解讀

1. 解析錯誤

Parse error: parse error, unexpected T_IF in script.php on line 4

真相:錯誤通常在 前一行。unexpected T_XXX 表示編譯器在不該出現預保留字(if/while/for...)的位置看到了它。

典型原因:

  • 上一行缺少分號結尾
  • 字串缺少引號
  • 大括號 {} 不匹配(函數/迴圈未閉合)

範例:

<?php
$b = "somevalue"  // 第 2 行缺分號
if($b == "somevalue"){ // 第 3 行
    print "Hello";
}
// 編譯器報錯:line 4 unexpected T_IF(實際指向 if 那行)

2. 遺漏大括號導致的文件結尾錯誤

function Useless() {
    for($i=0;$i<10;$i++) {
    } // 少了函數的右大括號
}
// 錯誤:Parse error: unexpected $end in script.php on line 9(文件最後一行)

對策:縮排對齊、使用支援括號匹配高亮的編輯器(VS Code、PhpStorm、Sublime、Notepad++),養成「寫左括號即寫右括號」習慣。

3. MySQL 資源無效錯誤

Warning: Supplied argument is not a valid MySQL result resource in ...

發生行:通常是 while($row = mysql_fetch_array($result))

根因:$result 不是有效結果資源,因為 mysql_query() 失敗。兩大原因:

  1. SQL 語法錯誤 → 複製 SQL 到 MySQL 控制台測試
  2. 資料庫連線失敗 → 檢查帳號/密碼/主機/權限

防禦性寫法:

$result = mysql_query($sql) or die("Query failed: " . mysql_error() . " SQL: $sql");

預防錯誤三大習慣

  1. 每行結尾加分號:肌肉記憶,零成本
  2. 縮排對齊、括號成對:視覺化結構,秒發現遺漏
  3. 使用語法高亮編輯器:即時標示字串未閉合、保留字誤用、分號遺漏

結語

除錯是開發者最核心技能。理解錯誤訊息真實含義、建立預防習慣、善用工具,能將除錯時間從「小時」壓縮到「分鐘」,大幅提升交付速度與心智負擔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved