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

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

Linda Hamilton
發布: 2025-01-23 01:08:08
原創
982 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板