phpでのpdoのmysqlトランザクションの使用例
2070 ワード
この例では、phpでのpdoのmysqlトランザクションの使用方法について説明します.皆さんの参考にしてください.具体的な分析は以下の通りである.
php+mysqlトランザクションのいくつかのステップ:
1.オートコミットを閉じる2.取引3を開く.異常があると自動的に異常メッセージを投げ出してからロールバックする.オートコミットを有効にする
注:mysqlはこのInnoDBドライバのみがトランザクションをサポートしています.デフォルトのMyIsamドライバはサポートされていません.次はインスタンスコードです.
本稿で述べたphpプログラム設計に役立つことを願っています.
php+mysqlトランザクションのいくつかのステップ:
1.オートコミットを閉じる2.取引3を開く.異常があると自動的に異常メッセージを投げ出してからロールバックする.オートコミットを有効にする
注:mysqlはこのInnoDBドライバのみがトランザクションをサポートしています.デフォルトのMyIsamドライバはサポートされていません.次はインスタンスコードです.
try{
$pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//
//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//
}catch(PDOException $e){
echo " :".$e->getMessage();
exit;
}
/*
*
*
* 2000
* 2000
* 2000
*
* MyIsAM InnoDB
*/
try{
$pdo->beginTransaction();//
$price=500;
$sql="update zhanghao set price=price-{$price} where id=1";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException(" ");//
$sql="update zhanghao set price=price+{$price} where id=3";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException(" ");
echo " !";
$pdo->commit();//
}catch(PDOException $e){
echo $e->getMessage();
$pdo->rollback();
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);// , ,
// ERRMODE_SILENT ERRMODE_WARNING
?>
本稿で述べたphpプログラム設計に役立つことを願っています.