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
Linda Hamiltonasal
2025-01-23 01:08:08982semak imbas

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>

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>

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!

Kenyataan:
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