mysql_query('START TRANSACTION');
を発行するだけです。 挿入物のすべてでエラーをチェックします。それらの1つが成功しない場合は、残りのクエリを実行せずにすぐにROLLBACKを発行します。すべてがうまくいけば、COMMITを発行します。
if-elseでネストのレベルが多すぎるのを避けるために、それらをtry-catchブロックに入れる方が簡単な場合があります。
// START TRANSACTION
try{
// INSERT 1
if(failed)
throw new Exception();
// INSERT 2
if(failed)
throw new Exception();
// INSERT 3
if(failed)
throw new Exception();
// COMMIT
}
catch(Exception $e){
// ROLLBACK
}
PHPの