現在の位置: ホーム> 最新記事一覧> PHPトランザクションの原理、ACIDの特徴、利用方法を詳しく解説

PHPトランザクションの原理、ACIDの特徴、利用方法を詳しく解説

M66 2025-10-25

PHP でのトランザクションの概要

トランザクションは、データベース内の操作のアトミックな単位であり、すべてが成功するか、すべてがロールバックされます。 PHP はトランザクション操作をサポートしているため、データベース操作のセキュリティと一貫性を確保できます。

トランザクションとは何ですか?

トランザクションは、すべての操作が正常に実行されるか、すべて失敗してロールバックされてデータの整合性が確保される、完全な操作単位です。

PHP の ACID トランザクション

PHP は、次のような ACID トランザクションをサポートします。

  • アトミック性: トランザクション内のすべての操作は成功するか、ロールバックされます。
  • 一貫性: トランザクションが完了した後も、データベースの状態は一貫したままになります。
  • 分離: トランザクションは互いに干渉しません。
  • 耐久性: トランザクションがコミットされた後、操作結果は永続的に保存されます。

トランザクションを開始する

mysqli_begin_transaction()関数を使用してトランザクションを開始します。

<?php
$conn = new mysqli("host", "username", "password", "database");
$conn-> begin_transaction();
?>

トランザクションをコミットする

トランザクション内のすべての操作が完了したら、 mysqli_commit() を使用してトランザクションをコミットします。

<?php
$conn->専念();
?>

トランザクションのロールバック

トランザクション内の操作が失敗した場合は、 mysqli_rollback() を使用してトランザクションをロールバックできます。

<?php
$conn->ロールバック();
?>

取引例

次の例は、PHP でトランザクションを使用して操作する方法を示しています。

<?php
$conn = new mysqli("host", "username", "password", "database");

$conn-> begin_transaction();

$sql = "ユーザーを更新する SET バランス = バランス + 100 WHERE id = 1";
$conn->クエリ($sql);

$sql = "アカウントを更新する SET 残高 = 残高 - 100 WHERE id = 2";
$conn->クエリ($sql);

$conn->commit();
?>

この例では、2 番目の更新ステートメントが失敗すると、トランザクションはロールバックされ、どちらの操作もデータベースに適用されないため、データの整合性と一貫性が確保されます。