排除MySQLi 的「指令不同步」錯誤
在取得所有資料之前執行後續查詢時,會發生MySQLi「指令不同步My ”錯誤上一個查詢的行。若要解決此問題,請確保在執行其他查詢之前取得所有行。
錯誤原因:
當未從查詢中取得行時,MySQL 用戶端禁止執行新查詢。正在進行的查詢。這是為了維護資料完整性並防止多個結果集之間發生衝突。
可能的解決方案:
1.使用mysqli_store_result() 或mysqli_fetch_all() 預取行
使用mysqli_store_result():
$result = mysqli_store_result($db);
使用mysqli_fetch_all():
$result = mysqli_query($db, $sql)->fetch_all();
2.對儲存程序使用mysqli_next_result()
如果執行預存程序,它可能會傳回多個結果集。在這種情況下,請在執行其他查詢之前使用 mysqli_next_result() 迭代並完成所有結果集。while ($result = mysqli_next_result($db)) { // process the result set }
3.層次結構的替代資料儲存
考慮以不同方式儲存層次結構資料以簡化查詢。探索各種資料庫模型,例如鄰接表或巢狀集模型,以最佳化資料結構並提高查詢效率。補充說明:
對於 CodeIgnitor 用戶,您可以因為 mysqli 驅動程式中的已知問題而遇到此錯誤。若要解決此問題,請修改驅動程式的 _execute() 函數,如下所示:以上是如何修復 MySQLi 的「命令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!