IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Transactions MSSQL ds php ? [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut Transactions MSSQL ds php ?
    Bonjour,

    A partir de ce code php ou j'exécute un script SQL, je souhaiterais utiliser les transactions (begin, rollback), pour que les actions (des utilisateurs) s'éxécutent bien les unes après les autres...Problème, je ne vois pas comment utiliser ces commandes ds mon script php...J'ai regardé les cours SQL sur les transactions (très instructifs), mais j'aimerais vos lumières pour l'intégration en php.

    Voici mon code php initial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		$table="ma_table";
    		$query="SELECT max(id)+1 AS max_val FROM $table"; //recherche du max + 1
    		$result=mssql_query($query);
    		$val=mssql_fetch_array($result);
    		$sysid_on_insert =  $val['max_val'];
     
     
    		$query="INSERT INTO $table (id) values($sysid_on_insert);"; //réservation
    		$result=mssql_query($query);
    Merci pour votre aide,

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Je ne connais pas bien mssql mais a priori il suffit de faire des requêtes BEGIN, COMMIT et ROLLBACK.

    Sinon pour ton exemple, mssql n'a-t-il pas comme tout bon SGBD un meilleur moyen de gérer les ids ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    pas trouvé, à vrai dire j'aurais pu faire ça en une seule ligne mais j'aais besoin de stocker ds une variable l'info $val['max_val'];

    Quand tu dis
    il suffit de faire des requêtes BEGIN, COMMIT et ROLLBACK.
    Tu peux me donner un lien vers un exemple précis STP ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Non, étant donné que je vois pas comment on peut être plus précis.
    mssql_query('BEGIN');
    mssql_query('truc bidule');
    mssql_query('chose');
    mssql_query('COMMIT');

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Par défaut
    je pense plutôt que tu dois tout mettre dans la meme query :

    query('
    BEGIN TRANSACTION toto
    UPDATE table_trucmuche SET champ_trucmuche = 12
    END TRANSACTION toto');

    et ensuite tu fais une autre requete rollback ou commit...
    Par contre, je ne sais pas si tu dois spécifier la transaction...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    Merci, je vais essayer comme ça

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    Aucun des exemples donées ci-dessus ne sont opérants :s

    Y a til des choses ds le .ini à modifier ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    ok j'ai compris pourquoi, un problème de syntaxe :
    mssql_query("BEGIN TRANSACTION;");

    C'est bon donc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Annuler une transaction SQL en PHP ou en SQL
    Par weldata dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/07/2007, 10h10
  2. [MSSQL et PHP] Problème de boucle
    Par Bounty59 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2007, 16h35
  3. Transactions InnoDB depuis PHP
    Par webrider dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/12/2006, 16h32
  4. [SQL-Server] Affichage des erreurs mssql en php
    Par Laure13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2006, 12h05
  5. [MySQL] Recherche script d'authentification MsSQL en PHP
    Par dodik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/02/2006, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo