Transakcje z PDO
Grupuj wiele zapytań w atomowe transakcje za pomocą beginTransaction i commit
Transakcje z PDO to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Czym jest transakcja?
Transakcja grupuje wiele instrukcji SQL w jedną jednostkę atomową: wszystkie kończą się powodzeniem (commit) albo wszystkie są wycofywane.
Właściwości ACID
Transakcje gwarantują właściwości ACID: atomowość, spójność, izolację i trwałość.
beginTransaction()
Rozpocznij transakcję za pomocą $pdo->beginTransaction(). Automatyczne zatwierdzanie jest wyłączone do momentu wywołania commit() lub rollBack().
commit()
Trwale zapisuje wszystkie zmiany wprowadzone od wywołania beginTransaction().
rollBack()
Odrzuca wszystkie zmiany wprowadzone od wywołania beginTransaction(), przywracając bazę danych do stanu sprzed transakcji.
Schemat transakcji
Zawsze opakowuj transakcje w blok try/catch:
<?php
try {
$pdo->beginTransaction();
$pdo->prepare("UPDATE accounts SET balance = balance - ? WHERE id = ?")
->execute([100, $senderId]);
$pdo->prepare("UPDATE accounts SET balance = balance + ? WHERE id = ?")
->execute([100, $receiverId]);
$pdo->commit();
} catch (PDOException $e) {
$pdo->rollBack();
throw $e;
}Punkty zapisu
PDO nie obsługuje natywnie zagnieżdżonych transakcji. Używaj poleceń SQL SAVEPOINT, aby częściowo wycofywać zmiany w ramach transakcji.
inTransaction()
Sprawdź, czy transakcja jest aktywna, za pomocą $pdo->inTransaction(). Metoda zwraca true albo false.
Tryb automatycznego zatwierdzania
Domyślnie PDO działa w trybie automatycznego zatwierdzania: każda instrukcja jest natychmiast zatwierdzana. beginTransaction() wyłącza automatyczne zatwierdzanie.
Poziomy izolacji
MySQL obsługuje: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ (domyślny) i SERIALIZABLE. Ustaw poziom za pomocą $pdo->exec("SET TRANSACTION ISOLATION LEVEL READ COMMITTED").
Kiedy używać transakcji
Używaj ich w przypadku przelewów bankowych, składania zamówień z odjęciem produktów ze stanu magazynowego oraz wszelkich zapisów do wielu tabel, w których częściowe wykonanie jest niedopuszczalne.
DDL a transakcje
W MySQL instrukcje DDL (CREATE TABLE, ALTER TABLE) powodują niejawne zatwierdzenie. Nie można wycofać instrukcji DDL wewnątrz transakcji.
Szybkie sprawdzenie
Co robi rollBack()?
Często zadawane pytania
Czy lekcja „Transakcje z PDO” jest bezpłatna?
Tak — pełny tekst „Transakcje z PDO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Transakcje z PDO”?
Grupuj wiele zapytań w atomowe transakcje za pomocą beginTransaction i commit Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Transakcje z PDO”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Łączenie z MySQL za pomocą PDO
- Instrukcje przygotowane i bindowanie parametrów
- Pobieranie wyników za pomocą PDO
- Transakcje z PDO