Rumah > Soal Jawab > teks badan
P粉2521165872023-07-25 15:41:15
Kadangkala kod mysqli anda akan menjana ralat, seperti mysqli_fetch_assoc() menjangkakan parameter 1 ialah mysqli_result tetapi sebenarnya mendapat boolean..., memanggil fungsi ahli bind_param()... atau ralat serupa. Tidak ada sebarang ralat tetapi pertanyaan masih tidak berfungsi. Ini bermakna pertanyaan anda gagal dilaksanakan.
Setiap kali pertanyaan gagal, MySQL akan mempunyai mesej ralat yang menerangkan sebabnya. Dalam versi PHP yang lebih lama, mesej ralat ini tidak dihantar kepada PHP dan anda hanya akan mendapat mesej ralat yang tidak jelas yang disebutkan di atas. Oleh itu, adalah sangat penting untuk mengkonfigurasi PHP dan mysqli untuk melaporkan ralat MySQL kepada anda. Sebaik sahaja anda mendapat mesej ralat, anda boleh membetulkan ralat tersebut.
Pertama, dalam semua persekitaran, sentiasa tambah baris kod berikut sebelum sambungan mysqli:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Selepas ini, semua ralat MySQL akan ditukar kepada pengecualian PHP. Pengecualian yang tidak ditangkap akan menyebabkan ralat maut PHP. Jadi jika ralat MySQL berlaku, anda akan menerima ralat PHP biasa. Ini akan segera memberitahu anda tentang punca ralat. Dan jejak tindanan akan membawa anda ke lokasi yang tepat di mana ralat berlaku.
Pada pelayan pembangunan, pastikan mesej ralat dipaparkan pada skrin, dan pada pelayan pengeluaran, semak log ralat. Lihat artikel saya tentang pelaporan ralat PHP untuk mendapatkan butiran.
Sila ambil perhatian bahawa apabila membuat panggilan AJAX, buka alat pembangun (F12) pada pelayan pembangunan dan tukar ke tab rangkaian. Kemudian buat permintaan yang anda ingin lihat hasilnya dan ia akan muncul dalam tab Rangkaian. Klik padanya dan tukar ke tab Respons. Anda akan melihat output yang tepat di sana. Pada pelayan pengeluaran, semak log ralat.
Pertama, anda perlu mencari pertanyaan masalah. Mesej ralat mengandungi nama fail dan nombor baris tempat ralat itu berlaku. Untuk kod ringkas, ini sudah memadai, tetapi jika kod anda menggunakan fungsi atau kelas, anda mungkin perlu menjejak tindanan untuk mencari pertanyaan masalah.
Selepas mendapat mesej ralat, anda perlu membaca dan memahaminya. Ini mungkin kedengaran terlalu jelas, tetapi pelajar sering mengabaikan fakta bahawa mesej ralat bukan sekadar tanda amaran, ia sebenarnya mengandungi penjelasan terperinci tentang masalah tersebut. Anda hanya perlu membaca mesej ralat dan menyelesaikan masalah.
Jika anda tidak memahami mesej ralat, cuba cari di Google. Apabila menyemak imbas hasil, pilih jawapan yang menerangkan ralat dan bukannya terus memberikan penyelesaian. Penyelesaian mungkin tidak berfungsi dalam situasi khusus anda, tetapi penjelasan akan membantu anda memahami masalah dan membolehkan anda menyelesaikannya sendiri.
Anda juga perlu mempercayai maklumat yang salah. Jika mesej ralat mengatakan bilangan token tidak sepadan dengan bilangan pembolehubah mengikat, itu sahaja. Begitu juga dengan jadual atau lajur yang hilang. Apabila memilih, sama ada kesalahan anda sendiri atau kesilapan maklumat yang salah, sentiasa berpegang pada yang pertama. Sekali lagi, ini mungkin terdengar sombong, tetapi beratus-ratus soalan di laman web ini membuktikan betapa berguna nasihat ini.
Jika pertanyaan anda nampaknya tidak berkesan, mungkin terdapat empat sebab: