Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat 'Arahan Tidak Segerak' dengan Penyata Disediakan MySQL dalam PHP?

Mengapa Saya Mendapat Ralat 'Arahan Tidak Segerak' dengan Penyata Disediakan MySQL dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-12-23 07:57:48
asal
151 orang telah melayarinya

Why Am I Getting a

Perintah Tidak Segerak, Isu Penyata Disediakan MySQL

Anda menghadapi ralat "Perintah tidak segerak" semasa cuba menjalankan dua MySQL pertanyaan menggunakan mysqli dan PHP. Ralat ini berlaku apabila terdapat berbilang pertanyaan tidak buffer sedang dijalankan dan arahan tidak dilaksanakan dalam susunan yang betul.

Dalam kod anda, anda telah menyediakan dua pertanyaan: $countQuery dan $recordsQuery. Walau bagaimanapun, secara lalai, mysqli menggunakan pertanyaan tidak buffer untuk pernyataan yang disediakan. Ini bermakna keputusan untuk setiap pertanyaan mesti diambil sebelum melaksanakan pertanyaan seterusnya.

Punca Ralat

Kod anda cuba untuk melaksanakan $recordsQuery dalam gelung $ countQuery. Memandangkan keputusan $countQuery tidak diambil, mysqli menganggap ini sebagai pertanyaan tidak buffer dan meneruskan untuk melaksanakan $recordsQuery tidak teratur. Ini menyebabkan ralat "Arahan tidak segerak".

Penyelesaian

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

  • Ambil hasil pertanyaan pertama: Ambil hasil $countQuery ke dalam tatasusunan menggunakan $numRecords->dapatkan_hasil(). Ini akan menimbal keputusan dan membolehkan anda melaksanakan $recordsQuery selepas itu.
  • Gunakan mysqli store_result(): Sebagai alternatif, anda boleh menggunakan kaedah $stmt->store_result() sebelum mengambil keputusan . Ini akan menimbal hasil secara dalaman tanpa memerlukan tatasusunan tambahan.

Contoh dengan store_result()

if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the query results
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    // Continue with your code...
Salin selepas log masuk

Nota:

Jika anda menggunakan $countQuery untuk mengira baris sebelum $recordsQuery, pastikan anda membebaskan hasilnya daripada $countQuery menggunakan $numRecords->free_result() sebelum melaksanakan $recordsQuery. Ini tidak perlu jika anda menggunakan store_result.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan Tidak Segerak' dengan Penyata Disediakan MySQL dalam PHP?. 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