Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Ralat 'Perintah tidak segerak' MySQLi?

Bagaimana untuk Membetulkan Ralat 'Perintah tidak segerak' MySQLi?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 18:24:12544semak imbas

How to Fix MySQLi's

Menyelesaikan masalah Ralat "Perintah tidak segerak" MySQLi

Ralat "Perintah tidak segerak" MySQLi berlaku apabila melaksanakan pertanyaan berikutnya sebelum mengambil semua baris daripada pertanyaan sebelumnya. Untuk menyelesaikan masalah ini, pastikan anda mengambil semua baris sebelum melaksanakan pertanyaan tambahan.

Punca Ralat:

Pelanggan MySQL melarang melaksanakan pertanyaan baharu sementara baris kekal tidak diambil daripada pertanyaan berterusan. Ini adalah untuk mengekalkan integriti data dan mengelakkan konflik antara berbilang set hasil.

Penyelesaian Kemungkinan:

1. Pra-ambil Baris Menggunakan mysqli_store_result() atau mysqli_fetch_all()

Menggunakan mysqli_store_result():

$result = mysqli_store_result($db);

Menggunakan mysqli_fetch_all():

$result = mysqli_query($db, $sql)->fetch_all();

2. Gunakan mysqli_next_result() untuk Prosedur Tersimpan

Jika anda melaksanakan prosedur tersimpan, ia mungkin mengembalikan beberapa set hasil. Dalam kes sedemikian, gunakan mysqli_next_result() untuk melelakan dan melengkapkan semua set hasil sebelum melaksanakan pertanyaan tambahan.

while ($result = mysqli_next_result($db)) {
    // process the result set
}

3. Storan Data Alternatif untuk Hierarki

Pertimbangkan untuk menyimpan data hierarki secara berbeza untuk memudahkan pertanyaan. Terokai pelbagai model pangkalan data, seperti senarai bersebelahan atau model set bersarang, untuk mengoptimumkan struktur data dan meningkatkan kecekapan pertanyaan.

Nota Tambahan:

Untuk pengguna CodeIgnitor, anda boleh menghadapi ralat ini kerana isu yang diketahui dalam pemacu mysqli. Untuk menyelesaikannya, ubah suai fungsi _execute() pemandu seperti berikut:

protected function _execute($sql)
{
    $results = $this->conn_id->query($this->_prep_query($sql));
    @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error
    return $results;
}

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Perintah tidak segerak' MySQLi?. 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