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 :

Récupérer un champ après un INSERT


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Récupérer un champ après un INSERT
    Bonjour à tous,
    je vous expose mon problème :
    J'ai une table qui contient plusieurs champs dont un du type SERIAL. Je fait un INSERT dans cette table puis directement un second INSERT dans une autre table qui doit utiliser la valeur de mon SERIAL.
    Je voudrais donc récupérer ce SERIAL inséré dans mon premier INSERT.
    cas 1 : utiliser un lastInsertId() ; "2 clients font un INSERT simultanément et hop j'ai perdu un sérial".
    cas 2 : faire un SELECT entre les 2 INSERT pour le récupérer ; "INSERT SELECT INSERT trop lourd à mon goût".
    Je voudrais donc savoir si il existe une autre manière pour pallier à mon problème.

    Merci d'avance, désolé si ce n'est pas très clair.

    PS : j'utilise les PDO.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Points : 68
    Points
    68
    Par défaut
    Il faut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO la_table() VALUES() RETURNING mon_id
    tu fetch ton result comme pour un select normal et tu récupère ainsi ton serial

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    /!\ pas essayé, ça ne marche peut-être pas.
    En lisant rapidement le manuel et en essayant de le rapprocher de ton problème, je pense que ça peut marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sth = $dbh->prepare("INSERT ... INTO ..."); // on prepare un PDOStatement en insert
    $sth->execute(); // on l'execute
    $result = $sth->fetch(PDO::FETCH_ASSOC); // on récupère la ligne insérée sous forme de tableau associatif
    $sth2 = $dbh->prepare("INSERT ... INTO ... WHERE ... ".$result['serialcolumn']); // on prépare la 2e requête avec la valeur du 1er insert
    $sth->execute(); //on exécute.
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

Discussions similaires

  1. [MySQL] Récupérer un id aprés un INSERT
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/11/2008, 16h34
  2. MySQL-ODBC - Récupérer l'id après un Insert()
    Par kurkaine dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/11/2007, 05h47
  3. Réponses: 5
    Dernier message: 11/01/2007, 15h10
  4. [VB NET]: Récupérer l'ID après une insertion
    Par ADONET dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2006, 10h26
  5. Réponses: 8
    Dernier message: 25/01/2006, 12h06

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