Pauschal würde ich sagen: Nutze Transaktionen.
Ich hab es mal so versucht:
  
$db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);  
try {  
  $db->beginTransaction();  
  $stmt = $db->prepare("INSERT INTO lockbit (user_id, locked) VALUES (?, ?)");  
  $stmt->execute(array(11111111, 1));  
  $stmt = $db->prepare("INSERT INTO lockbit (user_ida, locked) VALUES (?, ?)");  
  $stmt->execute(array(11111111, 1));  
  $db->commit();  
} catch(PDOException $e) {  
  $db->rollBack();  
}  
Dabei sollte das zweite INSERT INTO einen Fehler erzeugen (user_ida existiert nicht) und eigentlich doch das RollBack vollzogen werden oder?
Leider ist das nicht der fall. Es wird das erste INSERT INTO eingefügt, aber es findet kein rollBack statt.
 nicht angemeldet
 nicht angemeldet