PHP トランザクション削除操作方法: 1. 「autocommit(false)」メソッドを使用してデータベースの自動送信をオフにします; 2. すべての操作ステートメントが成功したら、「commit()」を通じてデータベースに送信します。操作が失敗した場合は、「rollback()」メソッドを使用して削除をロールバックします。
このチュートリアルの動作環境: 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 サイトの他の関連記事を参照してください。