首頁 >後端開發 >php教程 >為什麼在查詢資料庫時出現「嘗試存取 Null 類型值的陣列偏移」錯誤?

為什麼在查詢資料庫時出現「嘗試存取 Null 類型值的陣列偏移」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-11 16:27:03962瀏覽

Why Do I Get the

修正「嘗試存取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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn