ホームページ  >  記事  >  データベース  >  単一の mysqli ステートメントで複数のクエリを実行できますか?

単一の mysqli ステートメントで複数のクエリを実行できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 03:57:29171ブラウズ

Can You Execute Multiple Queries in a Single mysqli Statement?

単一の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。