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 :

Update avec bindvalue [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut Update avec bindvalue
    Bonjour à tous,

    Je fais une mise à jour avec une requette update, mais la requette met à jour toute la table. Je cherche, mais je n'ai pas trouvé l'erreur :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
        if (!isset($_POST['fil'])) {$_POST['fil']=0 ; }
        if (!isset($_POST['siege'])) {$_POST['siege']=0 ; }
        if (!isset($_POST['info'])) {$_POST['info']=0 ; }
        if (!isset($_POST['mere'])) {$_POST['mere']=0 ; }
        if (!isset($_POST['effst'])) {$_POST['effst']=0 ; }
        if ($_POST['steid'] !='') {
        try
        {
            $sql = 'UPDATE ste SET
                Ste_RS = :rs,
                Ste_Enseigne = :ens,
                Ste_Ville = :ville,
                Ste_CP = :cp,
                Ste_Activite = :act,
                Ste_Status = :sta , 
                ZNE_IdZone = :zone, 
                Ste_Ad1 = :ad1,
                Ste_Ad2 = :ad2,
                Ste_Ad3 = :ad3,
                Ste_Siret = :siret,
                NAF_Id = :naf ;
                Ste_Effectif = :eff, 
                Ste_EffecEstim = :effest,
                Ste_filliale = :fil,
                Ste_Siege = :siege ,
                Ste_PosteEstime = :pes,
                Ste_AnneeCrea = :annee,
                Ste_InfoInterne = :info,
                Ste_KM = :km,
                Ste_IdMere = :mere,
                Ste_CA = :ca,
                Ste_Pays = :pays,
                Ste_Desc = :desc,
                Cef_Lib = :tsa,
                Ste_Site = :web 
                where Ste_Id = :id ;' ; 
     
            $s = $pdo->prepare($sql);
            $s->bindValue(':rs', $_POST['rs'],PDO::PARAM_INT);
            $s->bindValue(':ens', $_POST['enseigne'],PDO::PARAM_STR);
            $s->bindValue(':ville', $_POST['ville'],PDO::PARAM_STR);
            $s->bindValue(':cp', $_POST['cp'],PDO::PARAM_INT);
            $s->bindValue(':act', $_POST['activite'],PDO::PARAM_STR);
            $s->bindValue(':sta', $_POST['status'],PDO::PARAM_STR);
            $s->bindValue(':zone', $_POST['zone'],PDO::PARAM_STR);
            $s->bindValue(':ad1', $_POST['ad1'],PDO::PARAM_STR);
            $s->bindValue(':ad2', $_POST['ad2'],PDO::PARAM_STR);
            $s->bindValue(':ad3', $_POST['ad3'],PDO::PARAM_STR);
            $s->bindValue(':siret', $_POST['siret'],PDO::PARAM_STR);
            $s->bindValue(':naf', $_POST['naf'],PDO::PARAM_STR);
            $s->bindValue(':eff', $_POST['eff'],PDO::PARAM_INT); 
            $s->bindValue(':effest', $_POST['effst'],PDO::PARAM_INT); 
            $s->bindValue(':fil', $_POST['fil'],PDO::PARAM_INT);
            $s->bindValue(':siege', $_POST['siege'],PDO::PARAM_INT); 
            $s->bindValue(':pes', $_POST['pes'],PDO::PARAM_INT);
            $s->bindValue(':annee', $_POST['annee'],PDO::PARAM_INT);
            $s->bindValue(':info', $_POST['info'],PDO::PARAM_INT);
            $s->bindValue(':km', $_POST['km'],PDO::PARAM_INT);
            $s->bindValue(':mere', $_POST['mere'],PDO::PARAM_INT);
            $s->bindValue(':ca', $_POST['ca'],PDO::PARAM_INT);
            $s->bindValue(':pays', $_POST['pays'],PDO::PARAM_STR);
            $s->bindValue(':desc', $_POST['desc'],PDO::PARAM_STR);
            $s->bindValue(':tsa', $_POST['tsa'],PDO::PARAM_STR);
            $s->bindValue(':web', $_POST['web'],PDO::PARAM_STR); 
            $s->bindValue(':id', $_POST['steid'],PDO::PARAM_INT);
     
            $s->execute();
    /*        $result = $s->fetchall();
            print_r($result); */
            print_r($_POST);
            $s->closeCursor();
    Pour info, le contenu de $_POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [rs] => 1Alpha & eo [id] => [cle] => [siret] => 123456 [enseigne] => sans [activite] => inconnu [naf] => 0000z [status] => RAF [web] => [eff] => 0 [annee] => 0 [ca] => 0.000 [tsa] => 0 salarie [km] => 0 [pes] => [effest] => [ad1] => 1 [ad2] => 2 [ad3] => 3 [cp] => 73000 [ville] => chambe [pays] => [zone] => inconnu [tel] => 04 76 32 21 68 [fax] => 04 76 37 48 67 [email] => [telid] => 28624 [faxid] => 28625 [mailid] => [telold] => 04 76 32 21 68 [faxold] => 04 76 37 48 67 [mailold] => [desc] => [steid] => 12032 [action] => editste [fil] => 0 [siege] => 0 [info] => 0 [mere] => 0 [effst] => 0 )
    merci pour votre aide
    Tornade

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pour info le message d'erreur ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Bonsoir,

    Il n'y a pas de message d'erreur, il met à jour toute la table, ne tient pas compte de la clause where.

    Merci

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    je ne sais pas. essaye ceci:
    dans post il n'y a que des string, chaque fois que tu spécifies un entier pour le bindvalue, rajoute un intval() pour fournir un entier comme dans la doc.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    C'est quoi ce point virgule après le marqueur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '...where Ste_Id = :id ;' ;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where Ste_Id = :id ;' ;
    Le point virgule c'est la fin d'instruction sql.

    J'ai fait la modif suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                Ste_Site = :web 
                where Ste_Id = :id ' ; 
     
            $steid = intval($_POST['steid']);
     
            $s = $pdo->prepare($sql);
            $s->bindValue(':rs', $_POST['rs'],PDO::PARAM_INT);
    .....
            $s->bindValue(':id', $steid,PDO::PARAM_INT);
     
            $s->execute();
    J'ai ajouter un variable avec le inval() pour avoir un numérique.

    Et toujours le même résultat, toute la table est mise à jour (avec ou sans le ; à la fin de l''instruction sql).

    C'est comme si il refusait la clause where ?

    Merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut


    bon comme tous le monde le sais le ; est la fin d'instruction sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ....
     Ste_Siret = :siret,
     NAF_Id = :naf ;
     Ste_Effectif = :eff, 
    .....
    faute de frappe, donc il n’interprétait pas la suite de l'instruction
    sans la remarque de ABCIWEB, je l'aurais pas vu !!

    Merci beaucoup pour votre aide,

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

Discussions similaires

  1. UPDATE avec JOIN ?
    Par zakuli dans le forum Débuter
    Réponses: 3
    Dernier message: 25/07/2007, 14h53
  2. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35
  3. Requete d'update avec concatenation !!
    Par chris92 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/02/2004, 12h05
  4. [version] Requete Update avec différentes versions de mySQL
    Par regbegpower dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2004, 17h19
  5. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58

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