Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat 'Cuba Mengakses Array Offset pada Nilai Jenis Null' Apabila Menyoal Pangkalan Data?

Mengapa Saya Mendapat Ralat 'Cuba Mengakses Array Offset pada Nilai Jenis Null' Apabila Menyoal Pangkalan Data?

Mary-Kate Olsen
Lepaskan: 2024-11-11 16:27:03
asal
963 orang telah melayarinya

Why Do I Get the

Membetulkan Ralat "Mencuba Mengakses Array Offset pada Nilai Jenis Null"

Apabila mendapatkan semula data daripada pangkalan data, adalah penting untuk mengendalikan senario di mana tiada rekod sepadan wujud. Ralat "Cuba mengakses tatasusunan mengimbangi pada nilai jenis null" timbul apabila pangkalan data gagal mencari baris yang sepadan untuk pertanyaan tertentu.

Mengapa Ralat Ini Berlaku?

Fungsi pengambilan pangkalan data, seperti mysqli_fetch_array, mengembalikan sama ada nilai nol atau tatasusunan kosong jika tiada rekod yang sepadan. Ini boleh berlaku apabila pertanyaan tidak betul, data tidak wujud atau set hasil telah habis.

Penyelesaian 1: Menyemak Kebenaran dan Kewujudan Utama

Untuk menyelesaikan isu ini, anda boleh mengesahkan kebenaran nilai yang dikembalikan dan menyemak sama ada kunci khusus yang anda ingin akses wujud. Berikut ialah contoh:

$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>";
}
Salin selepas log masuk

Dalam contoh ini, kami mula-mula menyemak sama ada $m11to1 bukan batal dan kemudian mengesahkan sama ada kekunci "lecture_day" wujud dan bukan rentetan kosong.

Penyelesaian 2: Nilai Lalai dalam PDO

Jika anda bekerja dengan PDO, anda boleh menentukan nilai lalai untuk keputusan sekiranya tiada baris yang sepadan ditemui:

$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;
Salin selepas log masuk

Ini memastikan bahawa $kuliah tidak akan batal, walaupun tiada rekod yang sepadan ditemui.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Cuba Mengakses Array Offset pada Nilai Jenis Null' Apabila Menyoal Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan