「mysql」検索結果
- <<
- 1
- >>
PHP + PDO + MySQL のトランザクション制御方法[edit]
2016/06/16 【コード】
<?php
require_once("function.php");
try{
$dbh = new PDO(DSN, USERNAME, PASSWORD);
// 静的プレースホルダを指定
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// エラー発生時に例外を投げる
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//パラメータ
$id = 1;
//トランザクション処理を開始
$dbh->beginTransaction();
try {
//プリペアドステートメント / ロック
$stmt1 = $dbh->prepare("SELECT * FROM USERS WHERE ID = ? FOR UPDATE");
$stmt1->bindParam(1, $id, PDO::PARAM_INT);
$stmt1->execute();
//プリペアドステートメント
$stmt = $dbh->prepare("UPDATE USERS SET COUNT = COUNT + 1 WHERE ID = ?");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
//コミット
$dbh->commit();
}catch(PDOException $e){
//ロールバック
$dbh->rollback();
throw $e;
}
} catch(PDOException $e){
echo $e->getMessage();
}
?>
- <<
- 1
- >>


