この記事では主にPHPでのトランザクションの使用例を紹介します。必要な方は参考にしてください。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
//データベース接続 $conn = mysql_connect('localhost', 'root', ''); mysql_select_db('test', $conn); mysql_query("SET NAMES GBK");
/* トランザクションをサポートするテーブルは InnoDB タイプである必要があります トランザクション内で 1 回のみ表示できます: mysql_query('START TRANSACTION');//トランザクションを開始します mysql_query(' ROLLBACK ');// トランザクションをロールバックします mysql_query('COMMIT');//トランザクションを送信します
トランザクション内で複数のロールバック トランザクションが発生する場合、トランザクションが送信されると、最初のロールバックの前からトランザクションの開始後までのデータベース上のすべての操作のみがキャンセルされ、最初のロールバックの後からその前までのデータベース上のすべての操作がキャンセルされます。コミットされたトランザクションはキャンセルされても有効であるため、通常はロールバック ステートメントをコミット トランザクション ステートメントの前にのみ配置します トランザクションに commit ステートメントがない場合、データベースに対する以下の操作はすべてトランザクションの最初から実行されます (実行メソッドは true または false を返します)。ただし、データベースには影響しません。次のトランザクションステートメントが実行されると、前のトランザクションは自動的にコミットされます */ mysql_query('トランザクションの開始'); $は悪い = 0;
$ins_testTable1 = "INSERT INTO testtable1(NAME,age)VALUES('first',23)"; if(!mysql_query($ins_testTable1)){ $は悪い =1; } //挿入ステートメントのフィールド名が間違っています $ins_testTable2 = "INSERT INTO testtable1(NAME,ages)VALUES('秒','24')"; if(!mysql_query($ins_testTable2)){ $は悪い =1; } if($isBad == 1){ エコー $isBad; mysql_query('ROLLBACK '); } mysql_query('COMMIT'); mysql_close($conn); ?>
|