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とトランザクション

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

2017-08-03
formのinputでmaxlengthを使うとFirefoxでバグってた。他のブラウザでも気づかずにバグってたかもしれない。
2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。
2017-06-27
MACにWin10をインストールしてみた:再挑戦。
2017-06-25
「簡単」っていうヤツらが多いけど・・・難しいぞ。