Rumah > pembangunan bahagian belakang > tutorial php > Ralat `Commands Out of Sync` MySQL: Bagaimana untuk Menyelesaikan Isu Pertanyaan Berjujukan dengan mysqli?

Ralat `Commands Out of Sync` MySQL: Bagaimana untuk Menyelesaikan Isu Pertanyaan Berjujukan dengan mysqli?

Barbara Streisand
Lepaskan: 2025-01-04 13:13:08
asal
708 orang telah melayarinya

MySQL `Commands Out of Sync` Error: How to Resolve Sequential Query Issues with mysqli?

MySQL: Commands Out of Sync Error

Isu:

Pengguna menghadapi "Arahan tidak segerak; anda tidak boleh menjalankan perintah ini sekarang" ralat semasa cuba melaksanakan berbilang pertanyaan MySQL menggunakan mysqli secara berurutan.

Punca:

Ralat ini berlaku kerana mysqli menggunakan pertanyaan tidak buffer secara lalai untuk pernyataan yang disediakan. Ini bermakna hasil pertanyaan pertama mesti diambil sebelum melaksanakan pertanyaan seterusnya.

Penyelesaian:

Terdapat dua cara untuk menyelesaikan isu ini:

Kaedah 1: Mengambil Keputusan ke dalam Tatasusunan

Ambil keputusan pertanyaan pertama ke dalam tatasusunan dan gelung melaluinya. Pendekatan ini melibatkan langkah berikut:

  1. Laksanakan pertanyaan pertama.
  2. Ambil semua baris ke dalam tatasusunan menggunakan mysqli_fetch_all() atau $stmt->fetch_all().
  3. Kosongkan keputusan menggunakan mysqli_free_result() atau $stmt->free_result().
  4. Laksanakan pertanyaan kedua.

Kaedah 2: Pertanyaan Penimbalan

Konfigurasikan mysqli kepada penimbal pertanyaan menggunakan mysqli_stmt_store_result(). Pendekatan ini melibatkan langkah berikut:

  1. Sediakan pertanyaan pertama.
  2. Laksanakan pertanyaan.
  3. Panggil $stmt->store_result() untuk menimbal keputusan .
  4. Laksanakan yang kedua pertanyaan.

Pelaksanaan:

Sebagai contoh, untuk melaksanakan Kaedah 2 dalam kod yang anda sediakan:

...
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the results
    ...
}
...
Salin selepas log masuk

Tambahan Nota:

  • Untuk pernyataan yang tidak disediakan (menggunakan mysqli_query()), tingkah laku lalai adalah penimbal.
  • Jika anda menghadapi ralat semasa menggunakan pertanyaan "SELECT *", ia mungkin disebabkan oleh jadual sementara yang dibuat, yang boleh menyebabkan ketidakkonsistenan dalam susunan pertanyaan.

Atas ialah kandungan terperinci Ralat `Commands Out of Sync` MySQL: Bagaimana untuk Menyelesaikan Isu Pertanyaan Berjujukan dengan 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