指令不同步:解決 PHP 中的問題
在 PHP 中使用 mysqli 處理多個 MySQL查詢時,您可能會遇到以下錯誤:「命令不同步;您現在無法執行此命令。」出現此錯誤的原因是使用無緩衝查詢,這表示必須按順序處理查詢結果才能執行後續查詢。
在提供的程式碼片段中,您執行一個查詢來決定基於 LIKE 子句的表中的記錄數 ($numRecords)。但是,$data 變數仍然引用上一個查詢的結果,這是不同步的。
要解決此問題,您有兩個選擇:
執行後$numRecords- >execute(),使用$data = $numRecords->get_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中文網其他相關文章!