為什麼我在 PHP 中收到「嘗試存取 Bool 類型值的陣列偏移量」錯誤?

Barbara Streisand
發布: 2024-11-18 04:17:03
原創
315 人瀏覽過

Why Am I Getting a

PHP 中的「嘗試存取Bool 類型值的陣列偏移量」錯誤

錯誤「嘗試存取Bool 類型值的陣列偏>

錯誤「嘗試存取Bool 類型值的陣列偏移量」當您嘗試存取不存在或無效類型(特別是布林值)的陣列元素時,會發生「type bool」。

在提供的程式碼片段中,您正在執行查詢以檢查如果資料庫中已存在使用者名稱或電子郵件。如果查詢未傳回任何結果,則會將 false 指派給對應的變數($emailRes 或 $nameRes)。

當您嘗試存取 $nameRes 或 $emailRes 的使用者名稱或電子郵件鍵時,您會得到錯誤,因為它們都是布林值,而不是陣列。

解決方案:

1.檢查是否存在:

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
if ($emailRes) {
    // Proceed to use $emailRes['Email']
}
登入後複製
在存取陣列偏移量之前,檢查資料庫是否回傳任何結果:

2.指定預設值:

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
$email = $emailRes['Email'] ?? ''; // Default to empty string
登入後複製
如果你不關心資料庫是否回傳任何內容,可以指定預設值:

3。使用 PDO 的 fetchColumn() 進行存在性檢查:

if ($query->fetchColumn()) {
    // Record exists
}
else {
    // Record does not exist
}
登入後複製
檢查資料庫中是否存在的更有效方法是使用fetchColumn():

4.一個查詢方法:

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR Email =:Email");
$query->execute([':Username' => $name, ':Email' => $email]);
if ($query->fetchColumn()) {
    // Username or email already exist
}
else {
    // Username and email are both available
}
登入後複製
您也可以在查詢中檢查使用者名稱和電子郵件是否存在:

以上是為什麼我在 PHP 中收到「嘗試存取 Bool 類型值的陣列偏移量」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板