phpでロールバックをして帳消しします。
try{
$pdo = new PDO($dns,$user,$pass,[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);}catch(PDOException $e){
echo '接続失敗' . $e->getMessage();
exit();
}
$pdo->beginTransaction(); //トランザクションの開始
$pdo->query(
"UPDATE user SET age = age + 1 WHERE id = 1"
);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result[0]["age"]);
26
間違えたことに気づきます。処理前まで巻き戻しましょう。
$pdo->rollback();
print_r($result[0]["age"]);
25
rollbackメソッドを実行することで$pdo->beginTransaction()のところまで巻き戻しています。
ちなみに以下のやり方だとエラーが出ます。
try{
$pdo = new PDO($dns,$user,$pass,[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);}catch(PDOException $e){
echo '接続失敗' . $e->getMessage();
exit();
}
$pdo->beginTransaction(); //トランザクションの開始
$pdo->query(
"UPDATE user SET age = age + 1 WHERE id = 1"
);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result[0]["age"]);
$pdo->commit(); //ここでコミットする
$pdo->rollback(); //コミットした後にrollbackメソッドを実行する
print_r($result[0]["age"]);
Fatal error: Uncaught PDOException: There is no active transaction in
また今度勉強しようと思います。