ホームページ >バックエンド開発 >PHPチュートリアル >mysqli を使用して MySQL で複数の INSERT ステートメントを同時に実行するにはどうすればよいですか?

mysqli を使用して MySQL で複数の INSERT ステートメントを同時に実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-07 19:50:14516ブラウズ

How Can I Execute Multiple INSERT Statements Simultaneously in MySQL Using mysqli?

複数の mysqli クエリ: INSERT ステートメントを同時に実行する

元の問題:

を実行しようとしましたを使用した 2 つの INSERT ステートメントmysqli_query() を連続して実行すると、2 番目のクエリが失敗します。この問題は、複数のクエリを 1 回の呼び出しで実行できないようにする MySQL のセキュリティ対策に起因します。

解決策: mysqli_multi_query()

1 回の呼び出しで複数のクエリを実行するには呼び出しの場合、mysqli_multi_query() を利用する必要があります。 function:

$query  = "INSERT INTO images (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName');";
$query .= "INSERT INTO images_history (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name, day, month, year) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName', '$day', '$month', '$year');";

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

クエリ結果の処理

mysqli_multi_query() を実行するとブール値が返されます。ただし、mysqli_store_result() を使用して各クエリの結果を手動で取得し、mysqli_more_results() および mysqli_next_result() を使用してそれらの結果をループすることが重要です。 mysqli_multi_query()

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);
    }
}

1 回の呼び出しで複数のクエリを効率的に実行します。

クエリの干渉を防止することでデータベースの整合性を維持します。
  • 追加考慮事項

mysqli_store_result() は、結果のないクエリ (例: INSERT ステートメント) に対して FALSE を返す場合があります。 mysqli_error() を使用して成功を確認します。

詳細については、mysqli_multi_query()、mysqli_more_results()、mysqli_next_result()、および mysqli_store_result() のドキュメントを参照してください。

以上がmysqli を使用して MySQL で複数の INSERT ステートメントを同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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