ホームページ >データベース >mysql チュートリアル >MySQLi は 1 つのステートメントで複数のクエリを準備できますか?
MySQLi は 1 つのステートメントで複数のクエリを準備できますか?
単一の MySQLi ステートメントで複数のクエリを準備することはできませんが、回避策は存在します
複数ステートメントの準備
単一の MySQLi ステートメントで複数のクエリを準備しようとすると、エラーが発生します。あるいは、複数のプリペアド ステートメントを作成することもできます。
<code class="php">$stmt = $mysqli->prepare("SELECT * FROM users"); $stmt2 = $mysqli->prepare("INSERT INTO orders (user_id) VALUES (?)");</code>
プリペアド ステートメントの結合
制御された方法で複数のクエリを実行するには、トランザクション:
<code class="php">mysqli->begin_transaction(); $stmt->execute(); $stmt2->execute(); mysqli->commit(); // Execute transaction</code>
これにより、両方のクエリが正常に実行されるか、まったく実行されないかが保証されます。
エラー処理
準備されたステートメントのいずれかが実行中に失敗すると、トランザクションはロールバックされ、変更は行われません。準備されたステートメントの実行後にエラーをチェックすることが重要です。
<code class="php">if ($stmt->errno != 0) { echo "Error: " . $stmt->error; }</code>
追加のヒント
通常、「非オブジェクトのメンバー関数の呼び出し」エラーが発生します。 prepare() メソッドが失敗した場合に発生します。続行する前に、クエリ文字列の構文が正しいことを確認してください。
以上がMySQLi は 1 つのステートメントで複数のクエリを準備できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。