PHP の「ブール型の値の配列オフセットにアクセスしようとしています」エラー
エラー「ブール型の値の配列オフセットにアクセスしようとしています」 type bool」は、存在しない配列要素、または無効な型の配列要素、具体的には配列要素にアクセスしようとすると発生します。 boolean.
提供されたコード スニペットでは、ユーザー名または電子メールがデータベースに既に存在するかどうかを確認するクエリを実行しています。クエリが結果を返さない場合、対応する変数 ($emailRes または $nameRes) に false が割り当てられます。
その後、$nameRes または $emailRes の Username または Email キーにアクセスしようとすると、両方ともブール値であるため、エラーが発生します。配列。
解決策:
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() を使用します:
データベース内の存在をチェックするより効率的な方法は、fetchColumn():
if ($query->fetchColumn()) { // Record exists } else { // Record does not exist }
4 を使用することです。 1 つのクエリのアプローチ:
1 つのクエリでユーザー名と電子メールの両方の存在を確認することもできます:
$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 で「ブール型の値の配列オフセットにアクセスしようとしています」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。