ホームページ >バックエンド開発 >PHPチュートリアル >mysqli を使用して MySQL で複数の INSERT ステートメントを同時に実行するにはどうすればよいですか?
複数の 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 サイトの他の関連記事を参照してください。