MySQLでのトランザクション

まず前提としてトランザクションの処理を行う時は、テーブルのストレートエンジンをInnoDBに設定します。
(MySQLのデフォルトはMyISAMになっています。)
以下のサンプルはINSERT文を実行して、処理が成功すればコミット、失敗すればロールバックを行っています。

<?php
	//データベース接続
	$conn = mysql_connect('localhost', 'root', '');
	if (!$conn) {
		die("データベース接続失敗");
	}
	//データベース選択
	mysql_select_db('test') or die("データベース選択失敗");
	//文字コード指定
	mysql_set_charset('utf8');
	
	//オートコミットを0に設定
	$sql = "SET AUTOCOMMIT = 0";
	mysql_query($sql);
	
	//トランザクション開始
	$sql = "BEGIN";
	mysql_query($sql);
	
	//INSERT文発行
	$sql = "INSERT INTO test(name) VALUES('test')";
	$res = mysql_query($sql);
	
	if ($res) {
		//成功時はコミットする
		$sql = "COMMIT";
		mysql_query($sql, $conn);
		echo "コミットしました";
	} else {
		//失敗時はロールバックする
		$sql = "ROLLBACK";
		mysql_query($sql, $conn);
		echo "ロールバックしました";
	}
	
	//mysql切断
	mysql_close($conn);
?>

最初にAUTOCOMMITを0にして機能をオフに設定します。デフォルトではAUTOCOMMITの機能はオンになっているので、オンのままだとINSERT、UPDATE、DELETEを実行するとCOMMITする前でもデータは確定されてしまいます。なのでまず最初にAUTOCOMMITの機能をオフにしてからトランザクションを開始します。