ホームページ > バックエンド開発 > PHPチュートリアル > PHP および MySQL トランザクションでデータの整合性を確保するにはどうすればよいですか?

PHP および MySQL トランザクションでデータの整合性を確保するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-23 21:33:14
オリジナル
370 人が閲覧しました

How Can I Ensure Data Integrity with PHP and MySQL Transactions?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート