ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi でトランザクションを開始および終了するにはどうすればよいですか?

MySQLi でトランザクションを開始および終了するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-06 21:13:12953ブラウズ

How Do I Start and End Transactions in MySQLi?

MySQLi でのトランザクションの開始と終了

MySQL を使用する場合、トランザクションがどのように動作するかを理解することが不可欠です。トランザクションは、複数のクエリをグループ化し、確実にアトミックに実行されるようにする方法として機能します。つまり、すべてのクエリが成功するか、まったく成功しないかのどちらかです。

トランザクションの開始

MySQLi では、トランザクションは非アクティブ化することで開始されます。 autocommit(FALSE) ステートメントを使用した自動コミット モード。オートコミットは MySQL のデフォルトの動作であり、すべてのクエリが独立して即時に実行されることを意味します。自動コミットを無効にすると、トランザクション制御が有効になり、複数のクエリをグループ化して 1 つの単位として実行できるようになります。

トランザクションの終了

トランザクション内で目的のクエリをグループ化した後、明示的に次の操作を行う必要があります。それを終わらせてください。トランザクションを終了するには 2 つの方法があります:

  1. コミット: トランザクション内のすべてのクエリがエラーなく正常に実行された場合は、commit() メソッドを使用してトランザクションを完了できます。これにより、トランザクション中に行われたすべての変更がデータベースに永続的に保存されます。
  2. Rollback: トランザクション内のクエリのいずれかが失敗した場合は、rollback() メソッドを使用してトランザクションをキャンセルできます。 。これにより、トランザクション中に行われたすべての変更が破棄され、データベースがトランザクション開始前の状態に戻ります。

次の PHP コード スニペットを考えてみましょう:

<?php
// Database connection
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// Start transaction
$mysqli->autocommit(FALSE);

// Queries within the transaction
$mysqli->query('UPDATE `table` SET `column` = 1');
$mysqli->query('UPDATE `table1` SET `column1` = 2');

// Commit or rollback
if ($allQueriesExecutedSuccessfully) {
  $mysqli->commit();
} else {
  $mysqli->rollback();
}
?>

この例では、autocommit(FALSE) を使用して自動コミット モードを無効にし、トランザクションを開始します。トランザクション内で複数のクエリが実行されます。実行ステータスに基づいて、トランザクションはコミットまたはロールバックされます。

以上がMySQLi でトランザクションを開始および終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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