如何避免 PHP 資料庫查詢中的「嘗試存取 bool 類型值的陣列偏移量」錯誤?

Patricia Arquette
發布: 2024-11-19 03:02:02
原創
602 人瀏覽過

How to Avoid the

檢查資料庫存在時如何處理「嘗試存取bool 類型值的陣列偏移量」錯誤

嘗試檢查時當資料庫中存在記錄時,開發人員可能會遇到「嘗試存取bool 類型值的陣列偏移量」錯誤。當資料庫查詢沒有傳回結果時,通常會發生這種情況,導致傳回 false 的布林值。

解決此錯誤需要驗證是否從資料庫檢索了任何記錄。這可以透過將資料庫取得操作封裝在檢查其是否存在的條件語句中來實現。

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
if ($emailRes) {
    // Use $emailRes
}
登入後複製

或者,如果資料庫沒有回傳任何內容,您可以指派一個預設值。

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
$email = $emailRes['Email'] ?? ''; // Default: empty string
登入後複製

要使用PDO 正確檢查資料庫是否存在,建議使用以下方法:

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username");
$query->execute([':Username' => $name]);
if ($query->fetchColumn()) {
    throw new \Exception("Username is already in use!");
}

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Email =:Email");
$query->execute([':Email' => $email]);
if ($query->fetchColumn()) {
    throw new \Exception("Email is already in use!");
}
登入後複製

此方法獲取匹配行的計數並將其計算為布林值,從而無需在PHP 中進行進一步比較。

要檢查單一查詢中是否有使用者名稱或電子郵件,可以使用下列指令:

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR  Email =:Email");
$query->execute([':Username' => $name, ':Email' => $email]);
if ($query->fetchColumn()) {
    throw new \Exception("Username or email is already in use!");
}
登入後複製

以上是如何避免 PHP 資料庫查詢中的「嘗試存取 bool 類型值的陣列偏移量」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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