यदि किसी भी कारण से लेन-देन विफल हो जाता है, तो कोड उसी पंक्ति में रुक जाता है जहां त्रुटि हुई थी अंत तो निष्पादन सीधे कैच ब्लॉक में कूद जाता है। तो जिस तरह से आपने इसे कोड ब्लॉक 2 में लिखा है, वह पर्याप्त है।
ध्यान दें कि आपको रोलबैक के बाद हमेशा अपवाद को फिर से फेंकना चाहिए। अन्यथा आपको कभी पता नहीं चलेगा कि समस्या क्या थी। तो यह होना चाहिए
try{
$stmt = $db->prepare(... 1 ...);
$stmt->execute();
$stmt = $db->prepare(... 2 ...);
$stmt->execute();
$stmt = $db->prepare(... 3 ...);
$stmt->execute();
$db->commit();
return true;
}catch(Exception $e){
$db->rollBack();
throw $e;
}