PHP 指令不同步:解決困境
當使用 PHP 和 MySQLi 從 MySQL當資料庫檢索資料時,執行多個準備好的語句有時會導致錯誤,「命令不同步,您無法執行該命令現在。」
原因和解決方案
當連線物件($mysqli)有先前查詢的待處理結果時,會發生此錯誤。要解決這個問題,您需要在每個準備好的語句之後呼叫 $mysqli 物件上的 next_result() 函數。
考慮這個範例:
$stmt = $mysqli->prepare("SELECT id, username, password, firstname, lastname, salt FROM members WHERE email = ? LIMIT 1"); $stmt->bind_param('s', $loweredEmail); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt); $stmt->fetch(); $stmt->free_result(); $stmt->close(); while ($mysqli->more_results()) { $mysqli->next_result(); } $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1"); $stmt1->bind_param('s', $user_id); // This is where the error occurs $stmt1->execute();
在此程式碼中,錯誤將是執行第二條語句($stmt1)時拋出。要修復此問題,請在執行$stmt1 之前添加以下行:
$mysqli->next_result();
其他提示
以上是PHP MySQLi「指令不同步」:如何修復錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!