単一の mysqli ステートメント内の複数のクエリ
複数のクエリを実行する単一の mysqli ステートメントを準備できますか?
質問:
複数のクエリを実行する単一の mysqli ステートメントを構築することは可能ですか?例:
<code class="php">mysqli->prepare("query1 ...1,2,3 param...; query2...4,5 param..."); or mysqli->prepare("insert into ...1,2,3 param...; insert into...4,5 param...");</code>
このような構築を試みると、「... 内の非オブジェクトでメンバー関数 binding_param() を呼び出します」というエラーが発生します
<code class="php">$stmt = $sql->getQueryPrepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?); INSERT INTO process (id_user, idp) VALUES (?,?);"); $stmt->bind_param("ssssss",$id, $username, $pw, $email, $id, $idp); $stmt->execute(); $stmt->close(); </code>
答え:
準備されたステートメントは 1 つの MySQL クエリのみを実行できます。ただし、複数のステートメントを個別の変数に準備することはできます。
<code class="php">$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)"); $stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");</code>
これらのステートメントは続けて実行できます。両方のクエリが正常に実行されたことを確認する必要がある場合は、トランザクションの使用を検討してください。
「非オブジェクトでのメンバー関数の呼び出し」エラーは、通常、エラーではなく、prepare() ステートメントの失敗を示していることに注意してください。後続のコードに問題があります。
以上が単一の mysqli ステートメントで複数のクエリを実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。