sql >> Databáze >  >> RDS >> Mysql

Transakce PHP, MySQL, PDO – Zkouší kód uvnitř blokové zastavení při commit()?

Pokud se transakce z jakéhokoli důvodu nezdaří, kód se zastaví na tom samém řádku, kde došlo k chybě konec pak provedení skočí přímo na blok catch. Stačí tedy, jak to máte napsané v bloku kódu 2.

Pamatujte, že byste měli vždy po vrácení vrátit výjimku znovu. Jinak nikdy nebudete mít tušení, v čem byl problém. Tak by to mělo být

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. odstranit poslední řádek v tabulce pomocí dotazu SQL?

  2. Nahrazení řetězce jiným řetězcem v SQL Server (T-SQL)

  3. Efektivně převádějte řádky na sloupce na serveru SQL

  4. Vložení datového objektu PHP se neprovádí