使用MySQLi 時出現「指令不同步」
問題:
An嘗試同時執行多個MySQLi 查詢會觸發「命令不同步」錯誤。嵌套查詢檢索分層資料。
原因:
當正在進行的查詢中的行保持未取得狀態時,MySQL 不允許執行新查詢。
解決方案:
選項1:使用mysqli_store_result()
$result = mysqli_store_result($db); // Execute subsequent queries
這會緩衝🎜>這會緩衝的行,允許執行多個查詢。
選項2:使用mysqli_result::fetch_all()
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
這將傳回整個結果集作為數組,允許執行多個查詢。
注意事項:
巢狀查詢表示分層資料儲存。考慮替代資料模型或使用 CodeIgnitor 等框架來使用 mysqli_next_result() 處理來自預存程序的多個結果集。
CodeIgnitor 實作:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
以上是如何解決 MySQLi 使用巢狀查詢時出現的「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!