この記事では、トランザクションの送信とロールバックを処理するための php+mysqli のテクニックを分析する方法を主に紹介します。必要な方は参考にしてください
この記事の例では、php+Mysqli がトランザクションを使用して転送の問題を処理する方法について説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
header("コンテンツタイプ:text/html; charset=utf-8");
$mysqli = new mysqli("localhost", "root", "064319", "php"); $mysqli->set_charset("utf8");
if($mysqli->connect_errno) { die('データベース接続に失敗しました'.$mysqli->connect_error); }
$mysqli->autocommit(false) //自動コミットモードを false に設定します ;$flag = true //トランザクションが正常に実行されたかどうかを示すフラグ
$query = "アカウントセットの残高=balance-1000、id=3を更新"; $result = $mysqli->query($query); $affected_count = $mysqli->affected_rows; if(!result || $affected_count == 0) { //失敗 $flag = false; }
$query = "アカウントセットの残高=残高+1000、id=2を更新"; $result = $mysqli->query($query); $affected_count = $mysqli->affected_rows; if(!$result || $affected_count == 0) { $flag = false; }
if($flag) { $mysqli->commit(); echo '転送成功'; } 他 { $mysqli->rollback(); echo '転送に失敗しました'; }
$mysqli->autocommit(true) //トランザクションを自動的にコミットするようにリセットします ;$mysqli->close(); ?> |
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。