首頁 >資料庫 >mysql教程 >為什麼我的 MySQLi PHP 程式碼中出現「指令不同步」錯誤?

為什麼我的 MySQLi PHP 程式碼中出現「指令不同步」錯誤?

DDD
DDD原創
2025-01-23 00:57:12187瀏覽

Why Am I Getting the

PHP MySQL 錯誤:指令不同步

你的 PHP 程式碼嘗試使用 mysqli 執行兩個 MySQL 查詢,但遇到錯誤 "Commands out of sync; you can't run this command now"。 這是由於 mysqli 預處理語句查詢預設情況下是非緩衝模式導致的。

錯誤根源

mysqli 預設以非緩衝模式執行查詢,這表示結果集不會儲存在記憶體中,而是直接串流到客戶端。 由於你使用了兩個查詢,第一個查詢執行並串流結果集。 然而,在從第一個查詢取得結果之前,你嘗試執行第二個查詢。 這會導致「指令不同步」錯誤,因為 mysqli 要求你在執行第二個查詢之前先取得第一個查詢的結果。

解:緩衝查詢

要解決此問題,你需要緩衝查詢。 你可以使用預處理語句物件的 store_result() 方法:

<code class="language-php">$numRecords->execute();
$numRecords->store_result();</code>

透過緩衝查詢,mysqli 將第一個查詢的結果集儲存在記憶體中,允許你稍後取得它,而不會與第二個查詢的執行衝突。

其他注意事項

在你的程式碼中,你也嘗試在一個 foreach 迴圈內執行不同的查詢:

<code class="language-php">$result = $con->query($recordsQuery);
$rows = array();
while($row = $result->fetch_assoc()) {
    $rows[] = $row;
}</code>

這其實沒有必要,因為你已經將查詢的結果儲存在名為 $rows 的變數中。 你可以直接在循環中使用該變數來存取已取得的行。

透過實作這些更改,你應該能夠執行 MySQL 查詢,而不會遇到「指令不同步」錯誤。

以上是為什麼我的 MySQLi PHP 程式碼中出現「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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