Aller au menu - Aller au contenu

Les transactions avec MySQL et PDO

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Pseudo Commentaire
Page 1 
En ligne SpaceFox # Posté le 01/09/2009 à 12:05:29
Utilise ton cerveau !
Avatar
Validateurs
Flux RSS

Études : UTT

Dans "InnoDB : un moteur pour des bases robustes" :
- "(lien vers tuto M..)" au lieu du lien.
- "transactionnel(le)s ??"
- "(lien ou explication)"

Dans "Les transactions : COMMIT et ROLLBACK" :
- J'ai l'impression qu'on va toujours annuler dans le dernier exemple (le ROLLBACK se fait toujours ou pas ?)


Sinon, mis à part ce dernier point et quelques problèmes de style, le tuto est pas mal.

Image utilisateur
 
Hors ligne Tortue facile # Posté le 01/09/2009 à 12:22:30
DB2 + Cobol + CICS
Avatar
Groupe : Anciens
Flux RSS

Ville : Ivry-sur-seine
Pays : France métropolitaine

Merci pour les fautes.

Pour le point souligné : oui effectivement on va toujours annuler ce qui a été fait précédemment : c'est le principe du ROLLBACK. Tu peux exécuter cette série de lignes autant de fois que tu veux, tes données ne changeront pas d'un iota.

Si c'est pas clair dites le.

Grand fan de la tortue j'ai créé un site web avec notamment des infos sur l'hibernation de la tortue de terre. Je vous conseille aussi de lire cet article sur les pratiques contestables de Blogbang vis à vis de sa régie de pub.


 
Hors ligne christophetd # Posté le 01/09/2009 à 12:48:51
Regardez-moi !
Avatar
Flux RSS

Ville : Gap
Pays : France métropolitaine

Non, perso je trouve ça clair, et ça peut être bien utile à certaine personnes. :)
 
Connecté SpaceFox # Posté le 01/09/2009 à 13:44:53
Utilise ton cerveau !
Avatar
Validateurs
Flux RSS

Études : UTT

Du coup ça soulève une question : Est-ce que tu peux faire en SQL pur un ROLLBACK uniquement si la transaction a foiré ?

Si ça n'a aucun intérêt, ce serait à signaler aussi.

Image utilisateur
 
Hors ligne firekraag # Posté le 01/09/2009 à 13:52:25
korben dallas mooltipass?
Avatar

Très bon tutoriel qui me sera surement utile.

Mais du coup je me pose quelques interrogations : y a-t-il des standards ? Comment fait-on en C++ ? Ou bien avec Oracle/Postgre/...

Et aussi, est-ce possible d'afficher la liste des requêtes d'une transaction en attente de validation ? (en gros dire à la base "répète moi la liste de tâches que je viens de te dire, juste pour être sûr")

Page perso (CV, photos) : http://www.leo-letaro.fr
 
Hors ligne Tortue facile # Posté le 01/09/2009 à 14:08:48
DB2 + Cobol + CICS
Avatar
Groupe : Anciens
Flux RSS

Ville : Ivry-sur-seine
Pays : France métropolitaine

@SpaceFox : si tu veux faire tout ça en SQL pur, faut passer par les procédures stockées, mais là c'est un tout autre niveau. C'est l'avantage de PDO "d'émuler" les commandes SQL pour les transactions.

@firekraag : y'a un standard selon les normes SQL, après chaque SGBDR fait comme il veut. Après avec par exemple le C++ je sais pas il faut voir si dans l'interface avec MySQl il y a des fonctions/méthodes similaires au PHP (je pense que oui mais moi et le C++ fait fait 2). Avec Oracle,PostGreSQL, etc ça marche au poil avec PDO puisque les pilotes sont fournis ces ces SGBDR.

Pour la liste des requêtes en attente de validation dans la transaction : je sais pas si c'est accessible étant donné que ça dure pas non plus une éternité, après c'est surement possible en logguant les requêtes.

Grand fan de la tortue j'ai créé un site web avec notamment des infos sur l'hibernation de la tortue de terre. Je vous conseille aussi de lire cet article sur les pratiques contestables de Blogbang vis à vis de sa régie de pub.


 
Connecté `Haku # Posté le 01/09/2009 à 16:00:45
* rose *
Avatar

Ville : Mons
Pays : Belgique

Parler de transaction sans parler du niveau d'isolation de celles-ci, c'est négligé une part très importante de leur utilisation.
 
Hors ligne Emm@nuel # Posté le 01/09/2009 à 16:34:50
J'aime les lapins ! :D
Avatar
Flux RSS

Bonjour, j'ai remarqué une faute de frappe au début du tutoriel :

En effet, vous avez involontairement oublié le s à <?php or exit(myql_error()); ?>. ^^

Edit de Tortue : merci c'est corrigé.
Hors ligne pathou # Posté le 01/09/2009 à 18:29:02

Autre faute dans "les transition COMMIT et ROLLBACK"

==> le montant du vendeur ne chnager pas d'un pouce

chnager veut changera ?
Hors ligne La source # Posté le 01/09/2009 à 19:30:33
où, quoi, comment ?
Avatar

Ville : Gembloux
Pays : Belgique

:euh: petite question... en lisant les commentaires au dessus de moi je vois:

Citation
si tu veux faire tout ça en SQL pur, faut passer par les procédures stockées


Cela veut-il dire que si on ne passe pas par PDO on dois faire quelque chose de spécifique ?


Car étant donné que j'utilise mysql_* (oui je sais il faudrait que je passe a autre chose, mais pour le moment moi je m'en satisfait), j'aimerai savoir si je peux utiliser les transactions sans problème.

Cordialement, La source.

Cherchez pas, l'erreur vient de vous ! (99.9% des erreurs sont entre la chaise et le clavier)
Utilisez votre tête et pas vos pieds pour réfléchir >_<
 
Connecté `Haku # Posté le 01/09/2009 à 19:44:22
* rose *
Avatar

Ville : Mons
Pays : Belgique

Tu peux sans problème utiliser les transactions avec les mysql_*.
 
Hors ligne La source # Posté le 01/09/2009 à 20:39:21
où, quoi, comment ?
Avatar

Ville : Gembloux
Pays : Belgique

Merci pour ton information ;)

Cherchez pas, l'erreur vient de vous ! (99.9% des erreurs sont entre la chaise et le clavier)
Utilisez votre tête et pas vos pieds pour réfléchir >_<
 
Hors ligne Weaponsb # Posté le 02/09/2009 à 09:29:09
la en desous a dit heu... rien
Avatar

Ville : Buire sur l'ancre
Pays : France métropolitaine
Études : BTS IRIS

Heu il me semble qu'il y à une 'erreur' dans le sens où le code n'est pas très propre sur les exceptions, en effet les exception de PDO sont normalement gérer par PDOException et non par Exception directement si ton code ne pose pas de problèmes c'est par ce que la classe Exception intercepte toutes les exceptions ;)

De plus tu doit normalement obligatoirement demander à PDO de travailler avec des exceptions avec le code
Code : PHP
1
2
3
<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);  //$pdo ici est l'instance de la classe PDO
?>


Sinon rien à redire ;)

RTFT => Read The Fucking Tuto
Envoyer un mail en php

http://www.pnconseil.fr
 
Connecté vyk12 # Posté le 02/09/2009 à 22:34:59
There is no spoon
Avatar
Groupe : Anciens

@Weaponsb => Peu importe, la classe PDOException hérite de la classe Exception, on se moque donc quelle exception intercepter puisque ces deux reviennent au même. Et par défaut, PDO travaille avec les exceptions il me semble.

Bref, super tuto, j'ai juste quelques petites "imperfections" :

1) Quand tu donnes des codes avec PDO, tu n'échappes pas les apostrophes dans la requête. C'est pas très "clean". :p

2) Ce n'est pas une erreur, mais tu places un SELECT * FROM machin. Je pense, même s'il ne s'agit que d'un exemple banale et que cette requête ne sera jamais présente dans un script, qu'il serait préférable de mettre plutôt SELECT champs FROM machin car à force de voir des exemples comme ça, les novices penseront qu'il s'agit d'une des meilleures façons d'écrire cette requête.

En bref, rien de bien important, et je le redis, très bon tuto. ;)
 
Hors ligne Weaponsb # Posté le 03/09/2009 à 10:23:02
la en desous a dit heu... rien
Avatar

Ville : Buire sur l'ancre
Pays : France métropolitaine
Études : BTS IRIS

vyk12 => c'est ce qui fait la différence entre un bon et un mauvais programmeur, si les mecs qui ont dev PDO, on jugé qu'il été utile d'utilisée une autre classe d'exception c'est peut être qu'il y à une raison non ? je n'ai pas été voir le code de PDO (peut être même pas accesible je ne sais pas) mais qui te dit qu'ils n'ont pas redéfini des méthodes ?
Pour le travail par défaut avec les exceptions non, par défaut PDO est en silent mod

RTFT => Read The Fucking Tuto
Envoyer un mail en php

http://www.pnconseil.fr
 
Connecté vyk12 # Posté le 03/09/2009 à 15:58:01
There is no spoon
Avatar
Groupe : Anciens

Peut-être qu'ils ont réécrit des méthodes, ce que je voulais dire c'est que si on attrapait les exceptions de la classe Exception, on attraperait aussi les exceptions PDOException avec toutes les méthodes et tous les attributs de celle-ci. Mais c'est vrai qu'il est préférable d'attraper les exceptions PDOException uniquement. ;)
 
Hors ligne anonyme # Posté le 16/04/2010 à 15:56:44

Il faudrait rajouter que les transactions sont un excellent boost pour des requêtes INSERT, car une insertion nécessite de rafraichir les indexs, donc au lieu d'envoyer à MySQL une INSERT à la fois, on lui injecte 500 en une fois ! C'est sympa pour restaurer une base de données très rapidement ou pour d'autres usages :)
Hors ligne ostream # Posté le 05/06/2010 à 18:24:09
Pas de commentaire
Avatar

C'est un bon tutos :)

Tu devrais peut-être préciser si les transactions peuvent s'étaler sur plusieurs page. Je ne crois pas... mais je vais essayer quand même.

Image utilisateur
 
Hors ligne asvez # Posté le 13/03/2011 à 19:24:32
Avatar

merçi ça me permet de déduire qu'on peut implémenter les transactions avec le c# et le java
Hors ligne Migarya # Posté le 24/03/2011 à 14:51:00

(je n'avais pas vu qu'il ne fallait pas poser de questions ici, veuillez m'excuser)
Hors ligne iyucef # Posté le 21/01/2012 à 14:50:46
Avatar

Avis : Bon

merci pour le tutoriel sa ma aider beaucoup a comprendre certains chose
Hors ligne jadu29 # Posté le 05/02/2012 à 15:18:09
Prenez bien soin de vous.

Ouais !
mais PDO ne marche qu en local ... ou presque !
Il y a peu d'hébergeur gratuit qui le propose !
Pour accéder à cette section
Connectez-vous !
connexion_rpx