PHP PDOのトランザクション

2013/04/07

例えば、複数件のレコードをDBに書き込んでいる途中で「トラブル発生したときに元の状態に戻す」ってのがトランザクションってヤツの考え方らしい。

で、PHPのPDO()ってヤツにもこのトランザクションって機能がいるみたい。
まだ試していないので、忘れる前にコピっておく。

PHP トランザクションおよび自動コミット

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
      array(PDO::ATTR_PERSISTENT => true));
  echo "接続しました\n";
} catch (Exception $e) {
  die("接続できません: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate)
      values (23, 50000, NOW())");
  $dbh->commit();
  
} catch (Exception $e) {
  $dbh->rollBack();
  echo "失敗しました。" . $e->getMessage();
}
?>

「beginTransaction()」と「commit()」の間に書き込み系の何かをしておけばよさげ。
マニュアルをみると勝手にロールバックしてくれるとか書いてるけど、ソースでは「rollBack()」と記載されている。これは、どういう意味なんだろう?
勝手にロールバックするけど、あえて明示してるだけなのかな?

▼PDO()じゃないヤツ
PHP Mysqlとトランザクション

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい