Latest web development tutorials
×

PHP kurs

PHP kurs PHP krótkie wprowadzenie PHP zainstalować PHP gramatyka PHP zmienna PHP echo/print PHP Typy danych PHP stały PHP sznur PHP operatorzy PHP If...Else PHP Switch PHP szyk PHP Sortowanie tablicy PHP superglobalne PHP While krążenie PHP For krążenie PHP funkcja PHP Magiczne Zmienne PHP Przestrzenie nazw PHP Obiektowe

PHP forma

PHP forma PHP Uwierzytelnianie za pomocą formularzy PHP forma - wymagane pola PHP forma - Weryfikacja e-mail i adres URL PHP Kompletna wystąpienie formularza PHP $_GET zmienna PHP $_POST zmienna

PHP zaawansowane Tutorial

PHP Tablice wielowymiarowe PHP data PHP zawierać PHP plik PHP Prześlij plik PHP Cookie PHP Session PHP E-mail PHP bezpieczeństwo E-mail PHP Error PHP Exception PHP filtr PHP Filtr zaawansowany PHP JSON

PHP 7 Nowe funkcje

PHP 7 Nowe funkcje

PHP baza danych

PHP MySQL krótkie wprowadzenie PHP MySQL połączenie PHP MySQL Tworzenie bazy danych PHP MySQL Tworzenie tabeli danych PHP MySQL Należy wprowadzić dane PHP MySQL Wstawić wiele danych PHP MySQL Przygotowane sprawozdania PHP MySQL odczytać dane PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX krótkie wprowadzenie AJAX PHP AJAX baza danych AJAX XML AJAX Wyszukiwanie w czasie rzeczywistym AJAX RSS Reader AJAX głosowanie

PHP Reference Manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Przetwarzanie obrazu PHP RESTful

Sprawy PHP PDO i auto-commit

Podręcznik PHP PDO referencyjny Podręcznik PHP PDO referencyjny

Teraz podłączony poprzez PDO poszedł przed rozpoczęciem kwerendy, należy najpierw zrozumieć, jak PDO jest zarządzanie sprawami.

Obsługa transakcji cztery właściwości (kwas):

  • Atomowość (niepodzielność)
  • Spójność (Spójność)
  • Izolacja (Isolation)
  • Trwałe (trwałość)

Mówiąc prościej, jakiekolwiek operacje wykonywane w ramach transakcji, a nawet stopniowe wdrażanie, ale także do zapewnienia bezpieczeństwa stosuje się do bazy danych, a nie zostaną przedłożone w czasie zakłóceń od innych połączeń.

operacje transakcyjne mogą być również automatycznie odwołane na życzenie (przy założeniu, że nie zostały jeszcze złożone), który ułatwia obsługę błędów w skrypcie.

Transakcja jest zwykle wykonywane przez szereg zmian "oszczędności" w górę, a następnie pozwolono wejść w życie i wdrożone; korzyści takiego działania jest zapewnienie skuteczności tych może być w znacznym stopniu zmienione.

Innymi słowy, transakcje mogą skrypty szybciej i potencjalnie bardziej wytrzymałe (trzeba jeszcze z nich korzystać właściwie czerpać te korzyści).

Niestety, nie wszystkie bazy danych obsługuje transakcje, więc kiedy po raz pierwszy otworzyć połączenia PDO wymaga tak zwanej "auto-commit" tryb pracy.

Auto-commit tryb oznacza, że ​​jeśli wsparcie dla baz danych, każdy prowadzony kwerenda ma własną niejawny transakcji, jeśli baza danych nie obsługuje transakcji, nie.

Jeśli potrzebujesz transakcję, należy użyć metody PDO :: beginTransaction (), aby rozpocząć. Jeśli kierowca będący nie obsługuje transakcji, rzucić PDOException wyjątku (niezależnie od tego, jakiego rodzaju ustawienia obsługi błędów, jest to poważny stan błędu).

Gdy transakcja jest dostępna PDO :: commit () lub PDO :: rollback (), aby zakończyć, w zależności od kodu transakcyjnego działa poprawnie.

Uwaga: tylko PDO czy możliwość przetwarzania transakcji w inspekcji warstwy kierowcy. Jeśli jakiś warunek wykonawczego oznacza, że ​​transakcja ta nie jest dostępna, i obsługa baz danych przyjmuje wniosek o wszczęcie transakcji, PDO :: beginTransaction () nadal będzie zwracać TRUE i błędów. Spróbuj użyć transakcji jest dobrym przykładem w tabelach MyISAM bazy danych MySQL.

Gdy skrypt zakończony lub połączenie ma zostać zamknięte, jeśli nie jest zakończona transakcji, PDO automatycznie cofnąć transakcję. Ten środek zabezpieczający pomaga uniknąć nieścisłości w scenariuszu kończy się nieoczekiwanie - jeśli nie wprost popełnienia transakcję, to założenie jest błędne gdzieś, więc przywracania zostanie przeprowadzona w celu zapewnienia bezpieczeństwa danych.

Uwaga: Tylko uruchom transakcję PDO :: beginTransaction () później, może się zdarzyć automatycznie wycofana. Jeśli ręcznie wydać zapytanie do rozpoczęcia transakcji, PDO nie może wiedzieć, tak że w razie potrzeby, nie może zostać wycofana.

W transakcji wykonując partię:

W poniższym przykładzie, załóżmy, że stworzenie zestawu wpisów dla nowych pracowników, przypisać identyfikator 23 IS. Oprócz podstawowych danych rejestracyjnych danej osoby, ale także trzeba nagrać swoją pensję.

Obie aktualizacje są zakończone jest bardzo proste, ale przez zamknięcie PDO :: metody beginTransaction () i PDO :: commit () połączenia, możliwe jest, aby upewnić się, że przed wprowadzeniem zmian, inni ludzie nie widzą te zmiany.

Jeśli wystąpi błąd, zapadka blokuje wszystkie zmiany, ponieważ transakcja została cofnięte od samego początku, i wysyła komunikat o błędzie.

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', 
      array(PDO::ATTR_PERSISTENT => true));
  echo "Connected\n";
} catch (Exception $e) {
  die("Unable to connect: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate) 
      values (23, 50000, NOW())");
  $dbh->commit();
  
} catch (Exception $e) {
  $dbh->rollBack();
  echo "Failed: " . $e->getMessage();
}
?>

nie ogranicza się do zmian w tej transakcji, może to wydawać skomplikowane zapytania do danych, ale także do budowy kolejnych zmian i zapytanie oparciu o tę informację, kiedy transakcja jest aktywna, można zapewnić, że inni nie mogą wprowadzać zmiany w funkcjonowaniu w toku.


Podręcznik PHP PDO referencyjny Podręcznik PHP PDO referencyjny