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();
このコードでは、エラーは次のようになります。 2 番目のステートメント ($stmt1) の実行時にスローされます。これを修正するには、$stmt1 を実行する前に次の行を追加します。
$mysqli->next_result();
追加のヒント
以上がPHP MySQLi 「コマンドが同期していません」: エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。