Ralat "Arahan tidak segerak" dalam PHP
Apabila melaksanakan berbilang pertanyaan MySQL menggunakan mysqli, anda mungkin menghadapi ralat "Arahan tidak segerak; anda tidak boleh menjalankan arahan ini sekarang". Ralat ini berlaku kerana mysqli menggunakan pertanyaan tidak buffer secara lalai, yang bermaksud bahawa keputusan pertanyaan pertama mesti diambil sebelum pertanyaan berikutnya dilaksanakan.
Sebab ralat
Dalam kod PHP yang disediakan, dua pertanyaan MySQL sedang dilaksanakan:
$data = $con->query($countQuery)
$rows = getRowsByArticleSearch("test", "Auctions", " ")
Ralat ini berkemungkinan besar dicetuskan apabila pertanyaan kedua dilaksanakan sebelum keputusan pertanyaan pertama diambil semula.
Penyelesaian
Terdapat dua cara untuk menyelesaikan masalah ini:
1. Dapatkan hasil pertanyaan pertama
Gunakan kaedah mysqli_fetch_*()
untuk mendapatkan semula hasil pertanyaan pertama sebelum melaksanakan pertanyaan kedua. Contohnya:
<code class="language-php">$data = $con->query($countQuery); $rowcount = $data->num_rows;</code>
2. Pertanyaan penimbal
Gunakan mysqli_stmt::store_result()
untuk mendayakan penimbalan pertanyaan. Ini akan menyebabkan mysqli menyimpan hasil pertanyaan pertama sebelum melaksanakan pertanyaan kedua.
<code class="language-php">$numRecords->store_result();</code>
Arahan lain
$countQuery
bahawa terdapat ralat sintaks dalam pertanyaan. Pastikan pertanyaan dibina dengan betul. mysqli::multi_query()
. Kaedah ini mengendalikan penimbalan dan penyegerakan secara automatik. Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan Tidak Segerak' Semasa Menjalankan Berbilang Pertanyaan MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!