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

SQL Procédural MySQL Discussion :

recuperer id apres insertion


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 89
    Par défaut recuperer id apres insertion
    Bonjour,

    J'ai un problème avec cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE PROCEDURE `recRef`(IN refIn VARCHAR(255),IN libIn VARCHAR(255),IN condIn VARCHAR(255),IN nbrIn INT(11),IN idUser INT(11),IN idDirection INT(11),IN alert INT(11),IN idFour INT(11),IN idEnseigne INT(11),
            IN detail VARCHAR(255),IN commentaire VARCHAR(255),IN validerIn INT(11),IN priceIn DEC(65,2),IN idCat INT(11),IN priceunitIn INT(11),IN fdv INT(2),IN pdsIN DEC(65,2))
    BEGIN
     
        INSERT INTO afalog_ref_marchandises (ref,lib,cond,nbr,id_utilisateurs,id_direction,seuil_alerte,id_fournisseur,id_enseigne,detail_val,commentaire_val,valider,price
        ,id_afalog_ss_category,priceunit,fin_de_vie,poids)
        VALUES (refIn,libIn,condIn,nbrIn,idUser,idDirection,alert,idFour,idEnseigne,detail,commentaire,validerIn,priceIn,idCat,priceunitIn,fdv,pdsIn);
        SELECT LAST_INSERT_ID();
    END
    elle est appelé ainsi (en php):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = "CALL recRef('$ref','$lib','$cond',$qts,$idUser,$idDir,$alerte,$idFour,$idEnseigne,'$detail','$commentaire',$val,$price,$idCat,$priceUnit,1,$pds)";
    		mysql_query($query);
    		$idRef = mysql_insert_id();
    a l'appel de la procédure (dans phpmyadmin ou autre j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE .recRef can't return a result set in the given context
    Et impossible de récupérer l'id de l'insertion. Cette id doit être récupérer dans $idRef bien sur soit une function PHP qui appel la procédure.

    Si j'essai dans mysql query, tout fonctionne parfaitement. L'insertion et j'affiche bien l'id.

    Une idée du problème svp ?

    Merci d'avance,

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Utilise une fonction qui permet de renvoyer une valeur par son RETURNS
    http://dev.mysql.com/doc/refman/5.0/...procedure.html

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 89
    Par défaut
    Après quelque essai, j'ai une nouvelle erreur.

    Erreur connexion DB : Commands out of sync; you can't run this command now

    des que j'appel une nouvelle requete mais je ne récupere toujours pas mon id...

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Il faut que tu vires le SELECT LAST_INSERT_ID() de ta procédure stockée, car mysql_query n'est pas fait pour récupérer le résultat d'une procédure. Par ailleurs, le mysql_insert_id() que tu utilises en-dessous devrait se suffire à lui-même.

Discussions similaires

  1. recuperation de l'identifiant après insertion
    Par al-faddi dans le forum C#
    Réponses: 3
    Dernier message: 28/05/2015, 19h24
  2. Recuperer l'identifiant aprés insertion d'un tupple
    Par bambou dans le forum PostgreSQL
    Réponses: 17
    Dernier message: 01/10/2010, 15h29
  3. recuperer id SERIAL après INSERT INTO ?
    Par hicpalm dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 11/02/2008, 09h46
  4. recuperer Sequence Oracle après insert
    Par maxf1 dans le forum JDBC
    Réponses: 3
    Dernier message: 10/02/2007, 23h17
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

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