ホームページ > バックエンド開発 > PHPチュートリアル > PHP で複数の MySQLi クエリを同時に実行するにはどうすればよいですか?

PHP で複数の MySQLi クエリを同時に実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-08 02:41:14
オリジナル
405 人が閲覧しました

How Can I Execute Multiple MySQLi Queries Simultaneously in PHP?

複数の mysqli クエリ: mysqli_multi_query() について

MySQLi では、単一のリクエストで複数のクエリを実行するのは簡単ではありません。別々の mysqli_query() 呼び出しを実行しようとすると、最初のクエリのみが実行されます。この制限を克服するために、mysqli_multi_query() は複数の SQL ステートメントを一度に実行するためのソリューションを提供します。

実装例:

次のシナリオを考えてみましょう:

mysqli_query($dblink, "INSERT INTO images ...");
mysqli_query($dblink, "INSERT INTO images_history ...");
ログイン後にコピー

両方のクエリを同時に実行するには、次のようにします。 mysqli_multi_query():

$mysqli = new mysqli(...);
$query = "INSERT INTO images ...";
$query .= "INSERT INTO images_history ...";

$result = mysqli_multi_query($mysqli, $query);

if ($result) {
    while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli)) {
        if (($result = mysqli_store_result($mysqli)) === false && mysqli_error($mysqli) != '') {
            echo "Query failed: " . mysqli_error($mysqli);
        }
    }
} else {
    echo "First query failed..." . mysqli_error($mysqli);
}
ログイン後にコピー

重要な考慮事項:

  • mysqli_multi_query() には、セミコロン (;) で区切られたすべてのクエリを含む文字列が必要です。
  • mysqli_store_result() は次のようにする必要があります各クエリの結果を取得するために使用されます。 INSERT クエリは結果セットを返さないため、mysqli_error() で空の文字列がないかチェックして、挿入が成功したことを確認します。
  • このアプローチは、複数の mysqli_query() 呼び出しの実行時に存在する SQL インジェクションを防ぐため、安全です。

追加リソース:

  • [mysqli_multi_query](https://www.php.net/manual/en/mysqli.multi-query.php)
  • [mysqli_more_results]( https://www.php.net/manual/en/mysqli.more-results .php)
  • [mysqli_next_result](https://www.php.net/manual/en/mysqli.next-result.php)
  • [mysqli_store_result](https://www .php.net/manual/en/mysqli.store-result.php)

以上がPHP で複数の MySQLi クエリを同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート