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 :

Requête MYSQL via PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Requête MYSQL via PHP
    Bonjours à tous,

    Je suis depuis hier bloqué sur un problème de requête SQL.
    Je souhaite utiliser une variable après SET mais cela ne fonctionne pas.
    Auriez vous une petite idée ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $reponse = $bdd->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='equipements' AND `TABLE_SCHEMA` = 'rx'");
     
    while ($donnees = $reponse->fetch())
    {
           $bdd->exec('UPDATE equipements SET '.$donnees['COLUMN_NAME'].' = '.$_POST[$donnees['COLUMN_NAME']].' WHERE numero_serie = '.$_POST['numero_serie']);
    } $reponse->closeCursor();
    Merci d'avance

  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
    On ne met pas des valeurs externes directement dans une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sth = $bdd->prepare('UPDATE equipements SET '.$nom_colonne.' = :valeur WHERE numero_serie = :numero_serie');
    $sth->execute(array(':valeur'=>$_POST[$nom_colonne], ':numero_serie'=>$_POST['numero_serie']));
    }
    Sur le fond, soit tu mets à jour toutes les colonnes et ton système ne sert à rien, soit tu mets à jour un nombre variable de valeurs et il manque un contrôle pour voir si la colonne a été postée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci Sabotage pour ta réponse.

    Le problème c'est que les colonnes de ma base de donnée sont évolutives.
    C'est pourquoi je récupère le nom de mes colonnes à l'aide de SELECT COLUMN_NAME et qu'en suite je mets à jour chaque colonnes.
    Je pense donc que je ne peux pas utiliser une requête préparée car je ne connais pas à l'avance le nom de mes colonnes.

    Je pensais donc utiliser une boucle while afin de mettre à jour chaque colonnes. Tu penses que ce n'est pas une bonne solution ? As tu une autre idée ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'ai essayé de faire comme ci-dessous mais cela ne fonctionne toujours pas.

    Je cherche à utiliser une variable après SET.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $reponse = $bdd->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='equipements' AND `TABLE_SCHEMA` = 'rx'");	
     
    while ($donnees = $reponse->fetch())
    {
           $nom_colonne = $donnees['COLUMN_NAME'];
           $req = $bdd->prepare('UPDATE equipements SET $nom_colonne  = :donnee WHERE numero_serie = '.$_POST['numero_serie']);
           $req->execute(array('donnee' => $_POST[$nom_colonne],));
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'ai réussi. Pour ceux que ça intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $reponse = $bdd->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='equipements' AND `TABLE_SCHEMA` = 'rx'");
    $numero_serie = $_POST['numero_serie'];
    while ($donnees = $reponse->fetch())
    {
    	$nom_colonne = $donnees['COLUMN_NAME'];
    	$bdd->exec("UPDATE equipements SET $nom_colonne  = '$_POST[$nom_colonne]' WHERE numero_serie = '$numero_serie'");	
    }

  6. #6
    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
    Je ne vois pas pourquoi tu t'obstines alors que je t'ai indiqué comment faire.
    Actuellement ton code a de gros problèmes de sécurité.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/09/2013, 16h23
  2. [VB6][MYSQL] recuperer des données MySQL via PHP
    Par psykotox dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/01/2008, 11h25
  3. recuperer des données MySQL via PHP en VB6
    Par pobrouwers dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/04/2007, 12h33
  4. [MySQL] Ajouter un acces utilisateur mysql via php.
    Par rhaamo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/12/2006, 17h57
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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