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 :

PDO UPDATE avec un SET variable


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 24
    Points : 31
    Points
    31
    Par défaut PDO UPDATE avec un SET variable
    Bonjour,

    Voici mon problème : Je veux mettre à jour une table dont le nombre de champs est variable.
    J'ai un array $id qui me donne la liste des champs à modifier.
    'materiel'.$value correspond bien au nom du champ à modifier et $materiel1[$value] correspond bien à la valeur de ce champ.
    Par contre je n'ai pas du écrire correctement la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            try {$bdd=new PDO('mysql:host='.$Serveur.';dbname='.$Bdd1,$Login1,$Password1);}
    	catch (Exception $e) {die('Erreur : '.$e->getMessage());}
    	$reponse=$bdd->prepare('UPDATE '.$table1.' SET commande=:commande WHERE section=\''.$section.'\'');
    	foreach ($id as $value) {
    		$reponse->execute(array('commande='=>'materiel'.$value,':commande'=>$materiel1[$value]));
    	}
    	$reponse->closeCursor();
    Pouvez-vous m'aider ? Merci

    Cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà tu devrais donner des noms pertinents à des variables, parce que $id, $materiel1, $table1 ce n'est pas très explicites ($materiel2 et $table3 c'est quoi ?)

    Pour ton problème precisemment tu ne peux pas avoir deux paramètres avec le même nom (donc commande et :commande ça ne va pas) et tu ne peux de toute façon pas utiliser un paramètre pour le nom des tables ou des colonnes.

    La methode la plus simple pour faire une requête dynamique est de ne pas nommer les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reponse=$bdd->prepare('UPDATE '.$table1.' SET materiel' . implode($id, '=?, materiel') . '=? WHERE section="'.$section.'"');
    $reponse->execute($materiel1);
    Il faut evidemment que $id et $materiel1 soient classés dans le même ordre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. comment faire la somme de variable récupérer avec c:set
    Par fakhita dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/07/2007, 14h58
  2. UPDATE avec plusieurs variables
    Par melmouj dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/03/2007, 14h51
  3. [MySQL] update avec variables
    Par bugs58 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/12/2006, 17h58
  4. Requête UPDATE avec variables...
    Par yokyok dans le forum Outils
    Réponses: 2
    Dernier message: 18/05/2006, 10h37
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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