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 :

Paramètre OUT dans procedure stockée [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut Paramètre OUT dans procedure stockée
    bonjour,
    je n'arrive pas à afficher le message d'erreur ,de mysql, sur ma page php.
    j'utilise une procédure stockée afin d'exécuter ma requette sql voici ma procedure stockée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    DROP PROCEDURE IF EXISTS insertClient3 $$
    CREATE PROCEDURE insertClient3 ( in_id_personne ,out error_status int)
     
    BEGIN
    declare duplicate_key_error condition for 1022;
     
     
    declare continue handler for duplicate_key_error
    begin
      rollback;
     
      set error_status=1;
      set out_msg="duplication de la clé primaire table personnes";
    end;
     
    start transaction;
     insert into Clients (idpersonne)
            values (in_id_personne);
     
    commit;
    END $$


    et voici mon code php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $sql= "call insertClient3(?,@numero)";
     
    $stmt=$mysqli->prepare ($sql);
     
    if ($mysqli->errno)
     {
     die($mysqli->errno.":: ".$mysqli->error);
     printf("erreur ligne 64");
     }
     
     $stmt->bind_param("s",$nom);
     
     $stmt->execute();
     
    $stmt->close();
     
     $result=$mysqli->query("SELECT  @numero AS num");
     
     
    $row=$result->fetch_object();
     
    printf($row->num);

    si quelqu'un peut m'aider à afficher le message d'erreur lorsqu'il y a une duoplication de clé. Merci.
    la requête s'exécute mais c'est juste le paramètre out qui correspond au message d'erreur qui ne s'affiche pas le printf($row->num); même avec echo.

    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 862
    Par défaut
    Il faudrait peut-être déclarer ta variable out_msg dans les paramètres OUT de ta procédure.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    bonjour,
    je veux juste afficher le code d'erreur la variable : "erreur_status";
    même si je met une variable OUT out_msg varchar(50); ca ne fonctionne pas
    je n'arrive pas à afficher les variables OUT qui correspondent aux erreurs.

  4. #4
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 862
    Par défaut
    Si la procédure génère une erreur, alors la requête est de type SELECT et tu peux simplement récupérer le résultat avec fetch.
    Effectue la juste avant ton $stmt->close().

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut Résolu
    bonjour,
    j'ai finalement trouvé:
    c'était l'erreur mysql qui ne correspondait pas à l'évènement.
    c'est pour cela quand il y avait une erreur de duplication de clé, le message s'affichait pas.
    j'ai changer le numéro de l'erreur avec celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    declare duplicate_key_error condition for 1062;
    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/08/2021, 14h52
  2. Réponses: 6
    Dernier message: 09/10/2006, 11h58
  3. Comment retourner plusieurs paramétre d'une procedure stockée?
    Par nic413 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 24/06/2006, 18h30
  4. Réponses: 3
    Dernier message: 19/04/2006, 18h44
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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