首頁 > 後端開發 > php教程 > 如何修復 PHP MySQL 查詢中的「命令不同步」錯誤?

如何修復 PHP MySQL 查詢中的「命令不同步」錯誤?

Susan Sarandon
發布: 2024-12-19 10:25:10
原創
450 人瀏覽過

How to Fix

指令不同步:解決 PHP 中的問題

在 PHP 中使用 mysqli 處理多個 MySQL查詢時,您可能會遇到以下錯誤:「命令不同步;您現在無法執行此命令。」出現此錯誤的原因是使用無緩衝查詢,這表示必須按順序處理查詢結果才能執行後續查詢。

在提供的程式碼片段中,您執行一個查詢來決定基於 LIKE 子句的表中的記錄數 ($numRecords)。但是,$data 變數仍然引用上一個查詢的結果,這是不同步的。

要解決此問題,您有兩個選擇:

  1. 取得結果陣列:

執行後$numRecords- >execute(),使用$data = $numRecords->get_result() 將結果取得到陣列中。這將儲存查詢的結果並允許您繼續執行其他查詢。

  1. 使用 store_result():

使用 store_result(執行後語句物件上的 ) 方法 ($numRecords->store_results->store_result())。這將指示 mysqli 緩衝結果,允許您執行後續查詢而不會出現不同步錯誤。

這是使用get_result() 方法修改的程式碼片段:

$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    
    // Fetch the result array into $data
    $data = $numRecords->get_result();
    $rowcount = mysqli_num_rows($data);
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
} else {
    print_r($con->error);
}
登入後複製

注意如果您執行非查詢(例如INSERT、UPDATE),然後嘗試執行從下列位置擷取資料的查詢,也可能會出現命令不同步錯誤:無需先關閉連線或取得非查詢的結果即可存取同一個表。在執行後續查詢之前,請確保您已關閉連線或處理了先前查詢的結果。

以上是如何修復 PHP MySQL 查詢中的「命令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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