首頁 >資料庫 >mysql教程 >為什麼在 PHP 的 MySQLi 準備語句中出現「指令不同步」錯誤,如何修復它們?

為什麼在 PHP 的 MySQLi 準備語句中出現「指令不同步」錯誤,如何修復它們?

Linda Hamilton
Linda Hamilton原創
2025-01-23 01:08:081044瀏覽

Why Do I Get

PHP 中的指令不同步錯誤:理解與解決

在準備任何查詢之前,必須執行查詢“SET NAMES 'utf8'”,因為它設定資料庫連接的字元集,並影響後續查詢中資料的解釋。

由於 MySQL 在預處理語句中預設使用非緩衝查詢,因此在單一腳本中執行多個查詢可能會導致問題。 mysqli 執行立即查詢,需要完成一個查詢才能執行另一個查詢。要解決此問題,您可以選擇以下兩種方法:

1. 將結果提取到數組中

此方法涉及執行第一個查詢,將其結果提取到數組中,然後執行第二個查詢。下面的程式碼示範了這一點:

<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. 緩衝查詢

使用 store_result() 指示 mysqli 緩衝查詢結果,讓您同時執行多個查詢。透過在 prepare() 語句之後加入以下行來實現此目的:

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

這將有效地將查詢結果保存在緩衝區中,允許您執行第二個查詢而不會遇到「命令不同步」錯誤。

以上是為什麼在 PHP 的 MySQLi 準備語句中出現「指令不同步」錯誤,如何修復它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn