修正「嘗試存取Null 類型值的陣列偏移」錯誤
從資料庫擷取資料時,必須處理不存在符合記錄的場景。當資料庫無法找到特定查詢的符合行時,會出現「嘗試存取 null 類型值的陣列偏移量」錯誤。
為什麼會出現此錯誤?
資料庫取得函數,如 mysqli_fetch_array,如果沒有符合的記錄,則傳回 null 值或空數組。當查詢不正確、資料不存在或結果集已耗盡時,可能會發生這種情況。
解決方案1:檢查真實性和密鑰是否存在
要解決此問題,您可以驗證返回值的真實性,並檢查您要訪問的特定密鑰是否存在。以下是範例:
$monday_lectures = "SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'"; $result_11to1 = mysqli_query($con, $monday_lectures); $m11to1 = mysqli_fetch_array($result_11to1); if ($m11to1 && $m11to1["lecture_day"] != '') { echo "<td>".$m11to1["lecture_name"]."</td>"; } else { echo "<td> no class</td>"; }
在這個範例中,我們先檢查 $m11to1 是否不為空,然後驗證鍵「lecture_day」是否存在且不是空字串。
解決方案2:PDO 中的預設值
如果您使用PDO,您可以為結果指定預設值,以防找不到符合的行:
$monday_lectures = $pdo->prepare("SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'"); $monday_lectures->execute(); $m11to1 = $monday_lectures->fetch(); $lecture = $m11to1["lecture_day"] ?? null;
這可以確保$lecture 不會為空,即使沒有找到符合的記錄。
以上是為什麼在查詢資料庫時出現「嘗試存取 Null 類型值的陣列偏移」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!