當嘗試同時執行 MySQL 查詢時,您可能會遇到「命令不同步」錯誤。當 MySQL 用戶端在嘗試執行新查詢時偵測到仍有行需要從正在進行的查詢中取得時,就會發生這種情況。
MySQL 用戶端要求所有行在啟動新查詢之前從查詢中取得。這可以防止資料損壞並確保客戶端的狀態與伺服器的狀態保持同步。
1.預先取得結果
您可以使用 mysqli_store_result() 從外部查詢中擷取所有行。這會指示 MySQL 用戶端緩衝結果,使您能夠不受干擾地執行後續查詢。
2.取得所有結果
或者,您可以使用 mysqli_result::fetch_all(),它將完整結果集作為 PHP 陣列傳回。這使您能夠迭代數組,而無需執行任何進一步的查詢。
預存程序可以傳回多個結果集,每個結果集都有自己的行。為了處理這種情況,您應該使用 mysqli_multi_query()。此方法啟動預存程序並循環遍歷其結果集,直到不再使用 mysqli_next_result()。
在平面表中表示分層資料的情況下,考慮使用不同的資料建模方法來簡化查詢。
對於使用 CodeIgnitor 3.0.3 並遇到此錯誤的個人,mysqli_driver.php 檔案中存在解決方法。具體來說,在第262行,修改_execute()方法如下:
以上是為什麼我的 MySQLi 程式碼會產生「命令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!