首頁 >後端開發 >php教程 >為什麼我在 PHP 中使用 MySQL 準備語句時會出現「指令不同步」錯誤?

為什麼我在 PHP 中使用 MySQL 準備語句時會出現「指令不同步」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-23 07:57:48140瀏覽

Why Am I Getting a

指令不同步,MySQL 準備語句問題

您在嘗試執行兩個MySQL 時遇到錯誤「指令不同步」使用mysqli和PHP 進行查詢。當正在進行多個無緩衝查詢且命令未按正確順序執行時,會出現此錯誤。

在您的程式碼中,您準備了兩個查詢:$countQuery 和 $recordsQuery。但是,預設情況下,mysqli 對準備好的語句使用無緩衝查詢。這意味著必須在執行下一個查詢之前取得每個查詢的結果。

錯誤原因

您的程式碼嘗試在 $ 循環內執行 $recordsQuery計數查詢。由於未取得 $countQuery 的結果,mysqli 將其視為無緩衝查詢並繼續無序執行 $recordsQuery。這會導致“命令不同步”錯誤。

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

  • 取得第一查詢的結果:使用下列指令將$countQuery 的結果取得到陣列中$numRecords->get_result()。這將緩衝結果並允許您隨後執行 $recordsQuery。
  • 使用 mysqli store_result(): 或者,您可以在取得結果之前使用 $stmt->store_result() 方法。這將在內部緩衝結果,而不需要額外的陣列。

store_result()的範例

if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the query results
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    // Continue with your code...

注意:

free_result() 的 $countQuery。如果您使用 store_result,則不需要此操作。

以上是為什麼我在 PHP 中使用 MySQL 準備語句時會出現「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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