為什麼 MySQLi 給「指令不同步」錯誤?
MySQL 用戶端不允許您執行新查詢同時仍有行需要從正在進行的查詢中取得。有關“命令不同步”的更多信息,請參閱有關常見錯誤的 MySQL 文件。
解決方案:
使用 mysqli_store_result() 預先取所有行外部查詢。這會將它們緩衝在 MySQL 用戶端中,因此伺服器認為您的應用程式已取得整個結果集。然後,您可以執行更多查詢,甚至在從現在緩衝的外部結果集中取得行的循環內。
或者,使用 mysqli_result::fetch_all(),它將完整結果集作為 PHP 陣列傳回。然後,您可以迭代該數組。
預存程序的特殊情況:
預存程序可以傳回多個結果集,每個結果集都有自己的行集。因此,有必要使用 mysqli_multi_query() 並循環,直到 mysqli_next_result() 不再傳回額外的結果集。這是滿足 MySQL 協定所必需的,即使您的預存程序只有一個結果集。
注意:
巢狀查詢通常用於表示層次結構數據,但具有更直接查詢的替代方法可能更可取。考慮以不同方式儲存資料以便於查詢。
以上是為什麼我在 MySQLi 中收到「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!