ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MySQL トランザクションでデータの整合性を確保するにはどうすればよいですか?
MySQL トランザクションを使用した PHP の例
PHP と MySQL のトランザクションは、一連のデータベース操作が確実に実行される方法を提供します。単一の原子単位。これは、トランザクション内のすべての操作がデータベースにコミットされるか、何もコミットされないかのどちらかを意味します。
例
PHP でトランザクションを使用するには、次のコードを使用できます。スニペット:
$db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); if ($a1 and $a2) { $db->commit(); } else { $db->rollback(); }
この例では、まず $db->beginTransaction() を使用してトランザクションを開始します。次に、2 つのクエリ $a1 と $a2 を実行し、両方のクエリが成功したかどうかを確認します。両方のクエリが成功した場合は、トランザクションを commit() して、変更をデータベースに永続的にします。それ以外の場合は、トランザクションを rollback() して、トランザクション中に行われた変更を破棄します。
Try-Catch を使用した代替アプローチ
トランザクションを処理する別のアプローチは、 try-catch ブロック:
try { $db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); $db->commit(); } catch (\Throwable $e) { $db->rollback(); throw $e; }
このアプローチでは、try ブロックでトランザクションを開始します。すべてのクエリが成功すると、トランザクションがコミットされます。いずれかのクエリが失敗した場合は、$db->rollback() を使用してトランザクションをロールバックし、処理のために例外を再スローします。
自動トランザクション
PHP には、すべてのクエリのトランザクションを自動的に処理する方法はありません。 beginTransaction() メソッドと commit() メソッド、または rollback() メソッドを使用して、トランザクションにどのクエリを含めるかを明示的に指定する必要があります。
以上がPHP および MySQL トランザクションでデータの整合性を確保するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。