ホームページ > バックエンド開発 > PHPチュートリアル > データベースのクエリ時に「Null 型の値の配列オフセットにアクセスしようとしています」というエラーが表示されるのはなぜですか?

データベースのクエリ時に「Null 型の値の配列オフセットにアクセスしようとしています」というエラーが表示されるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-11 16:27:03
オリジナル
963 人が閲覧しました

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 が null でないかどうかを確認し、次にキー "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 にならないことが保証されます。

以上がデータベースのクエリ時に「Null 型の値の配列オフセットにアクセスしようとしています」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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