Rumah > pangkalan data > tutorial mysql > Mengapa Saya Mendapat Ralat 'Arahan daripada Penyegerakan' dalam Penyata Disediakan MySQLi PHP, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Saya Mendapat Ralat 'Arahan daripada Penyegerakan' dalam Penyata Disediakan MySQLi PHP, dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Lepaskan: 2025-01-23 01:08:08
asal
980 orang telah melayarinya

Why Do I Get

Ralat arahan tidak segerak dalam PHP: Memahami dan menyelesaikan

Sebelum menyediakan sebarang pertanyaan, pertanyaan "SET NAMES 'utf8'" mesti dilaksanakan kerana ia menetapkan set aksara sambungan pangkalan data dan mempengaruhi tafsiran data dalam pertanyaan berikutnya.

Memandangkan MySQL menggunakan pertanyaan tidak buffer secara lalai dalam pernyataan yang disediakan, menjalankan berbilang pertanyaan dalam satu skrip boleh menyebabkan masalah. mysqli melakukan pertanyaan segera yang memerlukan satu pertanyaan untuk diselesaikan sebelum pertanyaan lain boleh dilaksanakan. Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

1. Ekstrak keputusan ke dalam tatasusunan

Kaedah ini melibatkan pelaksanaan pertanyaan pertama, mengekstrak hasilnya ke dalam tatasusunan, dan kemudian melaksanakan pertanyaan kedua. Kod di bawah menunjukkan ini:

<code class="language-php">$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "无法连接到 MySQL 服务器。错误代码:%s\n". mysqli_connect_error();
    exit;
}
// 设置字符集
$con->query("SET NAMES 'utf8'");

// 第一个查询
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
$numRecords = $con->prepare($countQuery);
$numRecords->bind_param("s", $brand);
$numRecords->execute();
$result = $numRecords->get_result(); // 将结果提取到数组中
$rowcount = $result->num_rows;

// 第二个查询
$rows = getRowsByArticleSearch("test", "Auctions", " ");</code>
Salin selepas log masuk

2. Pertanyaan penimbal

Gunakan store_result() untuk mengarahkan mysqli menimbal hasil pertanyaan, membolehkan anda melaksanakan berbilang pertanyaan serentak. Lakukan ini dengan menambah baris berikut selepas pernyataan prepare():

<code class="language-php">$stmt->store_result();</code>
Salin selepas log masuk

Ini secara berkesan akan menyimpan hasil pertanyaan dalam penimbal, membolehkan anda melaksanakan pertanyaan kedua tanpa menghadapi ralat "perintah tidak segerak".

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan daripada Penyegerakan' dalam Penyata Disediakan MySQLi PHP, dan Bagaimana Saya Boleh Membetulkannya?. 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