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