首頁 > 後端開發 > php教程 > MySQL「指令不同步」錯誤:如何解決 mysqli 的順序查詢問題?

MySQL「指令不同步」錯誤:如何解決 mysqli 的順序查詢問題?

Barbara Streisand
發布: 2025-01-04 13:13:08
原創
708 人瀏覽過

MySQL `Commands Out of Sync` Error: How to Resolve Sequential Query Issues with mysqli?

MySQL:指令不同步錯誤

問題:

使用者遇到「指令使用順序執行多個MySQL查詢時出現不同步;您現在無法執行此指令」錯誤mysqli.

原因:

出現此錯誤是因為mysqli 預設對準備好的語句使用無緩衝查詢。這意味著在執行下一個查詢之前必須檢索第一個查詢的結果。

解:

有兩種方法可以解決此問題:

方法一:將結果取入數組

取將第一個查詢的結果放入陣列中並循環遍歷它。此方法涉及以下步驟:

  1. 執行第一個查詢。
  2. 使用 mysqli_fetch_all() 或 $stmt->fetch_all() 將所有行提取到陣列中。
  3. 使用 mysqli_free_result() 釋放結果或$stmt->free_result().
  4. 執行第二個查詢。

方法二:緩衝查詢

設定mysqli緩衝使用 mysqli_stmt_store_result() 的查詢。此方法涉及以下步驟:

  1. 準備第一個查詢。
  2. 執行查詢。
  3. 調用$stmt->store_result() 來緩衝結果.
  4. 執行第二個

實現:

例如,在您提供的程式碼中實作方法2:

...
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the results
    ...
}
...
登入後複製

其他備註:

  • 對於非準備語句(使用 mysqli_query()),預設行為是緩衝的。
  • 如果您在使用「SELECT *」查詢時遇到錯誤,可能是由於建立了臨時表而導致的,這可以導致查詢順序不一致。

以上是MySQL「指令不同步」錯誤:如何解決 mysqli 的順序查詢問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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