Rumah  >  Soal Jawab  >  teks badan

Cuba untuk mengakses tatasusunan mengimbangi nilai jenis null dalam tatasusunan yang dihuni daripada set hasil MySQLi

Saya akhirnya dapat mengemas kini pemasangan PHP saya daripada 7.2 kepada 7.4 (bercadang untuk mengemas kini terus kepada versi semasa, tetapi melakukannya dalam langkah-langkah) dan saya mendapat ralat pelik apabila saya menjalankan skrip sedia ada:

Mesej: Cuba untuk mengakses array ofset pada nilai jenis null

Baris yang muncul hanya mengisi tatasusunan daripada set hasil mysql mudah.

for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;

Skrip masih berjalan dengan baik, tetapi saya tidak menyukai sebarang ralat. Saya keliru mengapa perkara ini berlaku dan telah mencari selama berjam-jam tetapi tidak berjaya. Mengapa ralat ini berlaku? Adakah terdapat cara untuk melakukan operasi yang sama tanpa ralat?

P粉046387133P粉046387133314 hari yang lalu543

membalas semua(2)saya akan balas

  • P粉076987386

    P粉0769873862024-01-03 16:51:35

    Mengikut dokumentasi, sebaik sahaja penghujung set keputusan dicapai, mysqli_fetch_row 将返回 null.

    Anda boleh menggunakan foreachgelung. Saya tidak mengesyorkannya, tetapi ia adalah penyelesaian yang mungkin.

    foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed

    Anda benar-benar tidak perlu menggunakan peranti pelik ini. Anda boleh menggunakan array_column() untuk operasi yang lebih mudah.

    $resultArray = array_column($result->fetch_all(), 0);

    balas
    0
  • P粉681400307

    P粉6814003072024-01-03 14:58:49

    mysqli_fetch_row 将在某个时刻返回 null (mengikut dokumentasi, ia sentiasa melakukan ini apabila kehabisan baris untuk diambil). Tetapi anda tidak menyemaknya sebelum cuba membaca indeks ke-0nya, jadi anda mendapat ralat.

    Ramai orang menggunakan gaya ini untuk mendapatkan semula baris:

    while ($row = mysqli_fetch_row($result)) { 
      $resultArray[] = $row[0]; 
    }

    Ini akan mengelakkan masalah seperti itu. Ini juga cara anda sering melihatnya dilakukan dalam contoh dan dokumentasi.

    balas
    0
  • Batalbalas