Punca Ralat MySQL 2014: Tidak Dapat Melaksanakan Pertanyaan Semasa Pertanyaan Tidak Dibuffer Lain Aktif
Ralat ini berlaku apabila cuba melaksanakan pertanyaan baharu sebelum ini melengkapkan hasil pemprosesan daripada pertanyaan yang tidak dibuffer sebelumnya. Protokol klien MySQL tidak membenarkan berbilang pertanyaan "sedang berjalan" serentak.
Penyelesaian:
-
Gunakan PDO::fetchAll(): Kaedah ini mengambil semua hasil pertanyaan sebelumnya secara tersirat, membenarkan pelaksanaan seterusnya pertanyaan.
-
Dayakan Penimbalan Pertanyaan: Tetapkan PDO::MYSQL_ATTR_USE_BUFFERED_QUERY kepada benar, menyebabkan pustaka klien menimbal hasil secara dalaman dan bukannya PHP.
-
CloseCursor >: Panggil closeCursor() untuk memaklumkan pelayan bahawa anda telah selesai mengambil hasil daripada pertanyaan.
Pengesyoran Tambahan:
- Alihkan kod invarian gelung di luar gelung: Elakkan daripada melaksanakan pertanyaan berulang kali yang mengembalikan hasil yang sama dalam gelung.
- Gunakan parameter bernama untuk pernyataan yang disediakan mudahkan lulus parameter.
- Pertimbangkan menggunakan perpustakaan klien mysqlnd untuk ciri dan kecekapan yang dipertingkatkan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 2014: 'Tidak Dapat Melaksanakan Pertanyaan Semasa Pertanyaan Tidak Dibuffer Lain Aktif'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!