Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat Ralat 'Arahan tidak segerak' dalam MySQLi Apabila Mendapatkan Data Hierarki?

Mengapa Saya Mendapat Ralat 'Arahan tidak segerak' dalam MySQLi Apabila Mendapatkan Data Hierarki?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 09:31:121026semak imbas

Why Am I Getting a

Arahan MySQL Tidak Disegerakkan Ralat semasa Mendapatkan Hierarki

Seseorang mungkin menghadapi ralat "Perintah tidak segerak" apabila cuba melaksanakan berbilang MySQLi pertanyaan, terutamanya semasa mendapatkan semula data hierarki. Artikel ini menyelidiki isu tersebut, menerangkan puncanya dan menyediakan penyelesaian yang berpotensi.

Punca Punca

Pelanggan MySQL mengehadkan pelaksanaan pertanyaan baharu sementara baris kekal tidak diambil daripada pertanyaan sedang berjalan. Ralat ini berpunca daripada protokol pelanggan, memastikan bahawa semua baris diambil secara berurutan sebelum meneruskan ke pertanyaan baharu.

Penyelesaian Kemungkinan

Untuk menyelesaikan isu ini, beberapa pilihan tersedia :

1. Menggunakan mysqli_store_result()

Kaedah ini pra-mengambil semua baris daripada pertanyaan luar ke dalam penimbal klien. Pelayan MySQL mengakui pengambilan penuh keputusan, membenarkan pertanyaan berikutnya dilaksanakan secara bebas.

2. Menggunakan mysqli_result::fetch_all()

Sama seperti mysqli_store_result(), kaedah ini mendapatkan semula set hasil keseluruhan sebagai tatasusunan PHP, membolehkan gelung dan pengambilan data yang cekap.

3. Menggunakan mysqli_multi_query() untuk Prosedur Tersimpan

Prosedur tersimpan berpotensi untuk mengembalikan berbilang set hasil, setiap satu mengandungi barisnya sendiri. mysqli_multi_query() harus digunakan untuk mengulang melalui set hasil ini, mengendalikannya secara berurutan dan mematuhi protokol MySQL.

Storan Data Alternatif

Untuk mengelakkan kelemahan nested pertanyaan dalam pengambilan data hierarki, pertimbangkan untuk menstruktur semula data untuk pertanyaan yang lebih mudah. Teknik seperti senarai bersebelahan atau set bersarang boleh memudahkan hierarki dengan ketara.

Custom Hack for CodeIgnitor 3.0.3

Untuk pengguna CodeIgnitor 3.0.3, penyelesaian melibatkan pengubahsuaian baris 262 daripada fail mysqli_driver.php. Dengan menambahkan @mysqli_next_result() pada kaedah _execute(), ralat 'command out ofsync' boleh dikurangkan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan tidak segerak' dalam MySQLi Apabila Mendapatkan Data Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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