sql >> Databasteknik >  >> RDS >> Mysql

PHP, MySQL, PDO-transaktioner - Stoppar koden inuti försöksblocket vid commit()?

Om transaktionen misslyckas av någon anledning, stannar koden vid raden där felet uppstod avsluta då körningen hoppar direkt till catch-blocket. Så det räcker som du har skrivit det i kodblock 2.

Observera att du bör alltid kasta om undantaget efter återställning. Annars kommer du aldrig att ha en aning om vad som var problemet. Så borde det vara

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;
}


  1. Varför begärde ogiltig konvertering FELKOD:17132?

  2. MariaDB MINUS Operatör förklaras

  3. Beställt antal på varandra följande upprepningar / dubbletter

  4. rätt syntax att använda nära '?'