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

Bagaimana untuk Membetulkan Ralat 'Perintah tidak segerak' MySQLi?

Patricia Arquette
Lepaskan: 2024-12-08 18:24:12
asal
547 orang telah melayarinya

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);
Salin selepas log masuk

Menggunakan mysqli_fetch_all():

$result = mysqli_query($db, $sql)->fetch_all();
Salin selepas log masuk

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
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan