Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Amaran \'mysql_fetch_assoc(): yang dibekalkan bukan sumber hasil MySQL yang sah\'?
"php warning mysql_fetch_assoc" Dibingungkan?
Apabila cuba mendapatkan data daripada pangkalan data MySQL, ia adalah perkara biasa untuk menghadapi "mysql_fetch" yang membingungkan (): argumen yang dibekalkan bukan amaran sumber hasil MySQL yang sah. Masalah ini timbul apabila hujah yang dihantar kepada fungsi mysql_fetch_assoc() bukan penunjuk set hasil yang sah.
Memahami Punca
Fungsi mysql_fetch_assoc() direka untuk ekstrak tatasusunan bersekutu daripada set hasil MySQL. Set hasil, seterusnya, diperoleh dengan melaksanakan pertanyaan dengan mysql_query(). Oleh itu, hujah yang dihantar kepada mysql_fetch_assoc() mestilah penunjuk set hasil yang sah, yang biasanya dikembalikan oleh mysql_query().
Menyelam ke dalam Kod
Dalam anda dengan menyediakan coretan kod, masalahnya terletak pada baris kedua:
<code class="php">$mus = mysql_fetch_assoc($musicfiles);</code>
Pembolehubah $musicfiles tidak mengandungi penuding set hasil MySQL. Sebaliknya, ia mengandungi hasil panggilan fungsi untuk getmusicfiles(). Fungsi ini nampaknya sedang melaksanakan pertanyaan dan mengembalikan hasilnya (mungkin menggunakan mysql_query()), tetapi nilai pulangan tidak disimpan dalam pembolehubah.
Pendekatan yang Betul
Untuk menyelesaikan isu ini, anda perlu menetapkan hasil panggilan mysql_query() kepada pembolehubah. Begini cara anda boleh menulis semula bahagian kod anda yang berkaitan:
<code class="php">$result = getmusicfiles($records['m_id']); $mus = mysql_fetch_assoc($result);</code>
Dengan memperuntukkan hasil mysql_query() kepada $result, anda memastikan mysql_fetch_assoc() mempunyai penunjuk set hasil yang sah untuk digunakan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Amaran \'mysql_fetch_assoc(): yang dibekalkan bukan sumber hasil MySQL yang sah\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!