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