Latest web development tutorials
×

PHP cours

PHP cours PHP Brève introduction PHP installer PHP grammaire PHP variable PHP echo/print PHP Types de données PHP constante PHP chaîne PHP opérateurs PHP If...Else PHP Switch PHP tableau PHP Tri d'un tableau PHP Superglobales PHP While circulation PHP For circulation PHP fonction PHP Variables magiques PHP Namespaces PHP Object-Oriented

PHP forme

PHP forme PHP Authentification Forms PHP forme - Les champs obligatoires PHP forme - email de vérification et d'URL PHP Complète instance de formulaire PHP $_GET variable PHP $_POST variable

PHP Tutorial avancée

PHP Les tableaux multidimensionnels PHP date PHP contenir PHP fichier PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sécurité E-mail PHP Error PHP Exception PHP filtre PHP filtre avancé PHP JSON

PHP 7 Nouvelles fonctionnalités

PHP 7 Nouvelles fonctionnalités

PHP Base de données

PHP MySQL Brève introduction PHP MySQL raccordement PHP MySQL La création d'une base de données PHP MySQL Créer une table de données PHP MySQL Insérer des données PHP MySQL Insérez des données multiples PHP MySQL Déclarations préparées PHP MySQL Lire les données 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 Brève introduction AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en temps réel AJAX RSS Reader AJAX vote

PHP Manuel de référence

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 Traitement de l'image PHP RESTful

PHP Affaires PDO et auto-commit

Manuel PHP PDO Référence Manuel PHP PDO Référence

Maintenant, connecté via PDO est allé en avant le début de la requête, vous devez d'abord comprendre comment PDO est de gérer les affaires.

Support des transactions quatre propriétés (ACID):

  • Atomicité (atomicité)
  • Cohérence (cohérence)
  • Isolation (Isolation)
  • Persistent (durabilité)

Plus simplement, toutes les opérations effectuées dans une transaction, même une mise en œuvre progressive, mais aussi pour garantir la sécurité appliquée à la base de données, et ne sera pas soumis à des interférences de temps à partir d'autres connexions.

les opérations de transaction peuvent également être automatiquement révoqués sur demande (en supposant pas encore soumis), ce qui le rend plus facile à gérer les erreurs dans un script.

La transaction se fait habituellement par un certain nombre de changements «économies» et laisse ensuite entrer en vigueur et mis en œuvre, les avantages de le faire est de fournir l'efficacité de ceux-ci peut être considérablement modifié.

En d'autres termes, les transactions peuvent rendre vos scripts plus rapides et potentiellement plus robustes (vous devez toujours les utiliser correctement pour récolter cet avantage).

Malheureusement, chaque base de données prend en charge les transactions, de sorte que lorsque vous ouvrez la connexion, PDO exige que l'on appelle "auto-commit" mode de fonctionnement.

Auto-commit en mode signifie que si le support de base de données, chaque exécution de la requête a sa propre transaction implicite, si la base de données ne supporte pas les transactions, non.

Si vous avez besoin d'une opération, vous devez utiliser la méthode PDO :: beginTransaction () pour démarrer. Si le conducteur sous-jacent ne supporte pas les transactions, jetez un PDOException d'exception (quel que soit le type de paramètres de gestion des erreurs, ceci est une condition d'erreur grave).

Une fois que la transaction est disponible PDO :: commit () ou PDO :: rollback () pour terminer, selon le code de transaction est en cours d'exécution avec succès.

Remarque: AOP seulement si la capacité de traitement des transactions à l'inspection de la couche de conducteur. Si une condition d'exécution signifie que la transaction ne sont pas disponibles, et le service de base de données accepte une demande d'ouverture de la transaction, PDO :: beginTransaction () retournera toujours TRUE et aucune erreur. Essayez d'utiliser la transaction est un bon exemple dans les tables base de données MySQL MyISAM.

Lorsque le script est terminé ou que la connexion est sur le point d'être fermé, s'il n'y a pas une transaction terminée, PDO sera automatiquement annuler la transaction. Cette mesure de sécurité permet d'éviter des incohérences dans le script se termine de manière inattendue - sinon engager explicitement la transaction, l'hypothèse est fausse quelque part, de sorte que la restauration est effectuée pour assurer la sécurité des données.

Remarque: commencer Seule une transaction PDO :: beginTransaction () plus tard, il peut arriver automatiquement annulée. Si vous avez manuellement une requête pour démarrer une transaction, le PDO ne peut pas savoir, de sorte que, le cas échéant, ne peut pas être annulée.

Dans une opération batch d'exécution:

Dans l'exemple suivant, supposons que vous créez un ensemble d'entrées pour les nouveaux employés, leur attribuer un identifiant 23 est. En plus des données de base de la personne de l'enregistrement, mais aussi vous devez enregistrer son salaire.

Les deux mises à jour sont terminées, il est très simple, mais en fermant le PDO :: beginTransaction () et PDO :: commit () appel, il est possible de faire en sorte que, avant les changements, d'autres personnes ne peuvent pas voir ces changements.

Si une erreur se produit, la prise bloquer tous les changements depuis la transaction a été annulée depuis le début, et délivre un message d'erreur.

<?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();
}
?>

Ne se limite pas à des changements dans la transaction, il peut émettre des requêtes complexes pour extraire des données, mais aussi de construire plus de changements et requête en utilisant cette information, lorsque la transaction est active, vous pouvez vous assurer que les autres ne peuvent pas faire des changements dans l'opération en cours.


Manuel PHP PDO Référence Manuel PHP PDO Référence