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 :

requete prepare() + gestion erreur [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut requete prepare() + gestion erreur
    Bonjour,

    pouvez vous me dire svp si la syntaxe est bonne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query=$db->prepare("UPDATE forum_membres SET membre_actif = 1 WHERE membre_cle_activation = :cle AND membre_id = :id");
    $query->bindValue(':cle', $_GET['clef'], PDO::PARAM_STR);
    $query->bindValue(':id', $_GET['id'], PDO::PARAM_STR);
    $query->execute();
    D'autre part comment savoir si la mise à jour de la table a été faite ? Est-ce que $query->execute() renvoie 0 ou 1 ? A mon avis c'est le cas mais je souhaitais en être sûr.

    Merci.

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $query=$db->prepare('
                                UPDATE forum_membres SET 
                                membre_actif =1 
                                WHERE 
                                membre_cle_activation =:cle 
                                AND 
                                membre_id = :id
                                 ');
     
    $query->bindValue(':cle', $_GET['clef'], PDO::PARAM_STR); // sa dépend du type string STR Integer INT
    $query->bindValue(':id', $_GET['id'], PDO::PARAM_STR);   // sa dépend du type string STR Integer INT
    $query->execute();
    aussi tu peut utilisé bindparam
    de préférence ajoute la gestion d'erreur try{................}catch{.......}
    D'autre part comment savoir si la mise à jour de la table a été faite ?
    bien sur en consultant la BDD , affichage d'un message sinon affichage du résultat.
    retourne un jeu de résultat (TRUE) sinon FALSE en cas d'erreur.

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    D'autre part comment savoir si la mise à jour de la table a été faite ? Est-ce que $query->execute() renvoie 0 ou 1 ? A mon avis c'est le cas mais je souhaitais en être sûr.
    Effectivement, PDO::execute() renvoie TRUE ou FALSE, mais un booléen.

    Pas ailleurs il ne faut pas mal interpréter cette valeur de retour.
    Ca renvoie TRUE lorsque la requête a correctement été exécutée, cela ne signifie pas pour autant qu'une mise à jour a été faite.

    Si par exemple la valeur de $_GET['id'] correspond à aucun menbre_id, la requête sera exécutée sans erreur, donc on aura TRUE comme valeur de retour mais sans aucune mise à jour effectuée.

    Pour avoir la certitude qu'une mise à jour à été faite il faut obtenir le nombre de lignes affectées.
    Pour ça il faut faire : (pour les types : INSERT, UPDATE et DELETE)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombre_affecte = $query->rowCount();
    Si cela renvoie 1 ou plus alors il y aura eu une mise à jour.


    A chacun de composer avec ça.

  4. #4
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Merci redoran.

    Citation Envoyé par redoran Voir le message
    bien sur en consultant la BDD , affichage d'un message sinon affichage du
    Tu veux dire consulter la bdd dynamiquement en php/mysql j'imagine rassure moi pas en ouvrant celle-ci avec phpmyadmin ?

    Merci beaucoup RunCodePhp, $query->rowCount(); c'est exactement ce qu'il me fallait !

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

Discussions similaires

  1. [PDO] message erreur avec 2 requetes prepare
    Par kate59 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 17/05/2012, 22h38
  2. Aide sur gestion erreur
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 05/01/2006, 18h05
  3. [Formulaire] Gestion erreur saisie d'une requête
    Par b_steph_2 dans le forum IHM
    Réponses: 6
    Dernier message: 05/01/2006, 16h40
  4. [Sécurité] gestion erreur login mdp
    Par oceane751 dans le forum Langage
    Réponses: 19
    Dernier message: 03/11/2005, 11h58
  5. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42

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