ホームページ > データベース > mysql チュートリアル > PHP で「ブール型の値の配列オフセットにアクセスしようとしています」というエラーが発生するのはなぜですか?

PHP で「ブール型の値の配列オフセットにアクセスしようとしています」というエラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-18 04:17:03
オリジナル
375 人が閲覧しました

Why Am I Getting a

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート