PHP 編譯器自上而下解析,遇到首個語法錯誤即停止並報錯。報錯行號往往指向錯誤被發現的位置,而非錯誤真正發生位置。
Parse error: unexpected T_IF in ... on line 4
典型原因:上一行語句缺少分號、字符串缺少引號、使用保留字作變量名(如 $while = 10;)。
線索:unexpected T_XXX 表示在不應出現該 Token 的位置出現,T_IF 對應 if,T_WHILE 對應 while 等。
function UselessFunction() {
for ($i = 0; $i < 10; $i++) {
}
// 缺少結束 }
?>
// 報錯:Parse error: unexpected $end in ... on line 9 (文件末尾)
編譯器尋找匹配 } 直到文件末尾,最終報錯於 EOF。
預防:養成「寫左括號即寫右括號」習慣,使用 IDE 自動補全,嚴格縮進對齊。
Warning: Supplied argument is not a valid MySQL result resource in ...
while ($row = mysql_fetch_array($result)) { ... }
根因:$result 非有效資源,實為 mysql_query() 失敗返回 false。
排查:
error_reporting(E_ALL) 並 display_errors(On)。理解編譯器報錯邏輯,能將調試時間從「盲目猜測」縮短為「定向定位」。良好的編碼習慣是預防低級錯誤的最有效手段。