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 :

Mettre une Variable dans une requête SELECT


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut Mettre une Variable dans une requête SELECT
    Bonjour,
    Dans mon script php j'ai une requête comme celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT nom, prenom, age FROM Personne WHERE nom ="Dupont"';
    Je souhaiterais remplacer la condition nom ="Dupont" par une variable qui sera transmise depuis mon Fla as3, j'ai donc écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nom = $_POST['want_nom'];
    $sql = 'SELECT nom, prenom, age FROM Personne WHERE nom ='.$nom;
    mais ça ne fonctionne pas, je commence tout juste dans le php et le sql, pouvez-vous m'aider à résoudre ce problème ?

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ça ne fonctionne pas parce que la chaîne obtenue est SELECT nom, prenom, age FROM Personne WHERE nom =Dupont et qu'il manque les quotes autour de Dupont.
    Mais quoi qu'il en soit, il ne faut surtout pas faire ça (c'est à dire introduire directement le contenu d'une variable dans une requête SQL), car c'est un trou de sécurité qui ouvre la porte aux injections SQL.
    Tu dois utiliser des requêtes préparées (ça consiste à mettre un placeholder dans la requête qui ensuite sera remplacer par le contenu de ta variable dont certains caractères seront automatiquement échappés pour éviter les injections).

    En utilisant PDO, ça donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dbh = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password');
     
    $sql = 'SELECT nom, prenom, age FROM Personne WHERE nom = :nom';
     
    $sth = $dbh->prepare($sql);
    $sth->execute(array(':nom', $nom));
    Cherche les tutoriels sur PDO et les requêtes préparées sur le site et regarde le manuel PHP.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Euh oui, effectivement j'ai pas encore rencontré le PDO, je vais me pencher dessus, sinon j'ai modifié ma ligne comme ça et ça fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT nom, prenom, age FROM Personne WHERE nom="'.$nom.'"';
    mais j'ai bien compris que ce n'est pas la bonne façon d'opérer côté sécurité.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A LIRE en priorité :


  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Bonjour j'ai message d'erreur:
    Fatal error: Uncaught exception 'PDOException' with message 'could not find driver
    .... dans notepad++ quand j'écris PDO il reste en grisé comme si il n'était pas reconnu, vous m'expliquer ce qui ce passe, svp ?
    Mon php avec notepad++ et phpmyadmin.free.fr et Windows 10

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Bonjour,
    Je n'ai trouvé aucune solution pour régler ce message d'erreur qui m'empèche du coup d'utiliser du PDO, quelqu'un pourrait-il m'aider svp ?

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Montre ton code.

Discussions similaires

  1. Mettre des variables dans une requête SQL
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/01/2015, 13h25
  2. Réponses: 4
    Dernier message: 27/04/2006, 14h05
  3. [CSS] Mettre des variable dans une feuille de style???
    Par Shakta dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/02/2006, 10h39
  4. fusion de 2 colonnes dans une requête select?
    Par epeichette dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/11/2005, 23h05
  5. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59

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