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

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

Susan Sarandon
Susan Sarandon原創
2024-12-19 10:25:10385瀏覽

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

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