PHPでトランザクションを削除する方法

藏色散人
リリース: 2023-03-17 14:20:01
オリジナル
1426 人が閲覧しました

PHP トランザクション削除操作方法: 1. 「autocommit(false)」メソッドを使用してデータベースの自動送信をオフにします; 2. すべての操作ステートメントが成功したら、「commit()」を通じてデータベースに送信します。操作が失敗した場合は、「rollback()」メソッドを使用して削除をロールバックします。

PHPでトランザクションを削除する方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。

phpでトランザクションを削除するにはどうすればよいですか?

php トランザクション処理トランザクション

MySQL トランザクションは主に、大規模な操作と高度に複雑なデータを処理するために使用されます。例えば、人事管理システムにおいて、個人を削除する場合、その個人の基本情報を削除するとともに、その個人に関連するメールボックスや記事などの情報も削除する必要があります。このようにして、これらのデータベースは、操作ステートメントはトランザクションを構成します。

MySQL では、Innodb データベース エンジンを使用するデータベースまたはテーブルのみがトランザクションをサポートします

トランザクション処理を使用して、データベースの整合性を維持し、SQL ステートメントのバッチが完全に実行されるようにすることができます。または、すべてを実行しない

トランザクションは、挿入、更新、および削除ステートメントの管理に使用されます

一般的に、トランザクションは、原子性 (アトミック性)、一貫性 (安定性) の 4 つの条件 (ACID) を満たす必要があります。 )、分離性 (分離)、耐久性 (永続性)

1. トランザクションの原子性: 一連のトランザクションは成功するか取り消されます。

2. 安定性: 不正なデータ (外部キー制約など) がある場合、トランザクションは取り消されます。

3. 分離: トランザクションは独立して実行されます。ある取引の結果が他の取引に影響を与える場合、他の取引は撤回されます。トランザクションを 100% 分離するには、速度を犠牲にする必要があります。

4. 耐久性: トランザクションがコミットされると、データベース内のデータへの変更は永続的なものとなり、データベースに障害が発生しても影響はありません。

次のプログラムを実行します

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错指令中的balance1属性
$sql2 = "update account set balance1 = balance + 2 where id = 2";        
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
}else{
    die('操作成功');
}
$mysqli->close();
ログイン後にコピー

上記のコードはエラーを報告しますが、データベースでは id=1 のバランスが変更されているため、問題が発生します。

同時に変更したいのですが、エラーがあると変更されません; このとき、「一貫性」を確保するために「トランザクション制御」が必要です;

We 使用する必要があるメソッドは autocommit() commit(); 以下のコードを見てください

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
//关闭数据库自动提交
$mysqli->autocommit(false);
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错属性balance1
$sql2 = "update account set balance1 = balance + 2 where id = 2";
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
    $mysqli->rollback();    //事务回退
}else{
    //操作全部正确后再提交
    $mysqli->commit();
}
$mysqli->close();
ログイン後にコピー

まず autocommit(false) メソッドを使用してデータベースの自動送信をオフにし、次にすべての操作ステートメントが成功すると、commit() がデータベースに送信されます。

操作が失敗した場合は、rollback() メソッドを使用してロールバックします。

推奨学習: 「PHP ビデオ チュートリアル

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

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