ホームページ  >  記事  >  バックエンド開発  >  PHP でデータベース トランザクションを記述する方法

PHP でデータベース トランザクションを記述する方法

WBOY
WBOYオリジナル
2023-05-16 08:45:211432ブラウズ

PHP は広く使用されている Web 開発言語であり、そのシンプルさ、学習の容易さ、柔軟性、高速性により、Web 開発の分野で重要なツールとなっています。 Web 開発において、データベースは不可欠なコンポーネントの 1 つです。データベースの整合性と一貫性を確保するために、開発者はトランザクションを使用してデータベース操作を制御できます。この記事では、PHPを使用してデータベーストランザクションを記述する方法を紹介します。

1. データベース トランザクションとは何ですか?

データベース トランザクションは、単一の論理的な作業単位として処理でき、次の 4 つの特性 (ACID) を満たす一連のデータベース操作を指します。

  1. アトミック アトミック性: トランザクションは次のとおりです。完了またはロールバックする必要がある分割できない操作単位。
  2. 一貫性: トランザクションの実行前と実行後、データベースの状態は一貫性を保つ必要があります。
  3. 分離: トランザクション実行中の変更は他のトランザクションには表示されません。
  4. 耐久性: トランザクションが正常に実行された後、データベースへの変更は永続的に保存する必要があり、システムに障害が発生した場合でも失われることはありません。

2. PHP はデータベース トランザクションをどのように実装しますか?

PHP を使用してデータベース トランザクションを実装するには、MySQLi、PDO などのデータベース操作拡張機能を使用する必要があります。以下では、MySQLi を例として、データベース トランザクションの実装方法を紹介します。

  1. トランザクションの開始

データベース操作に MySQLi を使用する前に、まず MySQL 接続を作成する必要があります。接続が作成された後、mysqli_begin_transaction() 関数を使用して新しいトランザクションを開始できます。サンプル コードは次のとおりです。

$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->begin_transaction();
  1. 操作の実行

トランザクションの開始後、データの挿入、更新、削除などのデータベース操作を実行できます。サンプル コードは次のとおりです。

$mysqli->query("INSERT INTO `user` (`name`, `age`, `sex`) VALUES ('张三', 20, 1)");
$mysqli->query("UPDATE `user` SET `age` = 21 WHERE `name` = '张三'");
$mysqli->query("DELETE FROM `user` WHERE `name` = '李四'");
  1. トランザクションのコミットまたはロールバック

トランザクション操作が完了した後、mysqli_commit() 関数を使用してトランザクションをコミットできます。そしてすべての操作をデータベース中間に適用します。エラーが発生した場合、または操作をロールバックしたい場合は、mysqli_rollback() 関数を使用してトランザクションのロールバックを実装できます。サンプル コードは次のとおりです。

try {
    $mysqli->commit();
    echo "操作成功";
} catch (Exception $e) {
    $mysqli_rollback();
    echo "操作失败";
}

上記のコードでは、すべての操作が正常に実行された場合、トランザクションはコミットされ、「操作成功」が出力され、それ以外の場合、トランザクションはロールバックされ、「操作失敗」が出力されます。出力。

3. 使用上の注意

  1. すべてのデータベース操作は、トランザクションの開始からコミットまたはロールバックまでの間に実行する必要があります。
  2. トランザクションの実行プロセス中にエラーが発生した場合、データベースへの取り返しのつかない損傷を避けるために、トランザクションを適時にロールバックする必要があります。
  3. プリペアド ステートメントを使用できる場合は、SQL インジェクションのリスクを避けるためにプリペアド ステートメントを使用するようにしてください。
  4. 各データベース接続は同時に 1 つのトランザクションのみを実行でき、複数のトランザクションには複数の接続が必要です。
  5. データベース トランザクションを使用する場合は、すべてのテーブルで InnoDB ストレージ エンジンが使用されていることを確認する必要があります。これは、InnoDB はトランザクションをサポートしていますが、MyISAM はトランザクションをサポートしていないためです。

4. 概要

PHP を使用してデータベース トランザクションを実装すると、データベース操作の一貫性と整合性を効果的に確保し、データベースへの悪影響を回避できます。開発者は、特定のビジネス ニーズに基づいてトランザクション操作を合理的に使用して、アプリケーション開発の効率と安定性を向上させることができます。

以上がPHP でデータベース トランザクションを記述する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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