PHP MySQL Transactions
Use transactions for data consistency and rollback support
MySQLi Transactions
$conn->begin_transaction(); # start transaction
try { # error handling
$conn->query("UPDATE accounts SET balance=balance-100 WHERE id=1"); # deduct money
$conn->query("UPDATE accounts SET balance=balance+100 WHERE id=2"); # add money
$conn->commit(); # save changes
} catch (Exception $e) { # handle error
$conn->rollback(); # undo all changes
}
PDO Transactions
$pdo->beginTransaction(); # start transaction
try { # try block
$pdo->exec("INSERT INTO orders (user_id, total) VALUES (1, 299.99)"); # create order
$pdo->exec("UPDATE inventory SET stock=stock-1 WHERE product_id=5"); # reduce stock
$pdo->commit(); # commit changes
} catch (Exception $e) { # catch error
$pdo->rollBack(); # rollback transaction
}
Transaction Properties
$conn->autocommit(FALSE); # disable autocommit
$conn->commit(); # manually commit
$conn->rollback(); # rollback changes
$conn->autocommit(TRUE); # re-enable autocommit