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 :

Passer une variable string à une requête


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut Passer une variable string à une requête
    bonsoir à toutes et tous

    Je veux récupérer la variable (un pseudo) d'un formulaire et le transmettre à une requête Mysql soit stockée soit directement je n'arrive pas à transmettre cette variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            include("/ConnexionBaseBridgez.php");
    	$connexion=connexionBaseBridgez();
    	//récupération du pseudo 
    	 $pseudo = $_POST['pseudo'];
    	 echo '$pseudo = '.$pseudo.   '&nbsp&nbsp&nbsp'; 
    	 var_dump($pseudo);
    	 echo'<br>';
    	 //protection de la variable string donné par l'utilisateur par la méthode PDO::quote()
    	$pseudo_lit = $connexion->quote($_POST['pseudo']);
    	 echo '  $pseudo_lit  = ' . $pseudo_lit.'&nbsp&nbsp&nbsp';
    	 var_dump($pseudo_lit);
    	 echo'<br/>';
    apparemment des variables string toutes les deux, seule $pseudo_lit fonctionne dans la requête suivante mais avec $pseudo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $sql = "SELECT pl.id, pl.pseudo
    	FROM players AS pl
    	WHERE pl.pseudo = ".$pseudo;
     
    /////////pour voir le résultat//////////
    	$rep=$connexion->query($sql);	 
    	if (!$rep) {
    		die('Requête invalide : ') ;
    	}
    		while ($donnees = $rep->fetch()){ 
    	echo ' id_player '.$donnees['id'].'<br/>  pseudo '.$donnees['pseudo'].'<br/> ';
    		}
    malheureusement l'utilisation de $pseudo me renvoi une erreur (avec "lear" comme pseudo envoyé par le formulaire)
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'lear' in 'where clause'' in
    MAIS Lorsque je fait cette autre requête avec $pseudo_lit ça fonctionne correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$sql = "SELECT pl.id, pl.pseudo
    	FROM players AS pl
    	WHERE pl.pseudo = ".$pseudo_lit;
    SI quelqu'un peut m'éclairer merci d'avance

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Les chaînes de caractères doivent être entre '. Sans quoi SQL considère qu'il s'agit d'un champ de table.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$sql = "SELECT pl.id, pl.pseudo
    	FROM players AS pl
    	WHERE pl.pseudo = '".$pseudo_lit."'";

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$sql = "SELECT pl.id, pl.pseudo
    	FROM players AS pl
    	WHERE pl.pseudo = '$pseudo_lit'";

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Par défaut
    Bonjour,

    Citation Envoyé par marco62118 Voir le message
    malheureusement l'utilisation de $pseudo me renvoi une erreur (avec "lear" comme pseudo envoyé par le formulaire)
    Lorsque tu utilises la variable $pseudo, cette dernière est lue directement depuis le tableau $_POST.
    En faisant cela, ta requête devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT pl.id, pl.pseudo FROM players AS pl WHERE pl.pseudo = lear";
    Lorsque MySQL tente d’exécuter la requête, ce dernier tente de lire une colonne lear (qui n'existe pas).
    Pour indiquer que lear est une valeur, il est nécessaire de l'entourer de quote ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT pl.id, pl.pseudo FROM players AS pl WHERE pl.pseudo = 'lear'";
    Citation Envoyé par marco62118 Voir le message
    MAIS Lorsque je fait cette autre requête avec $pseudo_lit ça fonctionne correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$sql = "SELECT pl.id, pl.pseudo
    	FROM players AS pl
    	WHERE pl.pseudo = ".$pseudo_lit;
    L'utilisation de la variable $pseudo_lit fonctionne car elle est initialisée à travers la fonction quote de la classe PDO.
    Cette fonction, entre autre, ajoute des quotes autours de la valeur de la variable. Ta requête ressemblera donc à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT pl.id, pl.pseudo FROM players AS pl WHERE pl.pseudo = 'lear' ";
    Petit conseil, une bonne pratique est d'utiliser la fonction prepare de la classe PDO pour réaliser des requêtes.
    Ce qui donne dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $secure_query = $connexion->prepare("SELECT pl.id, pl.pseudo FROM players AS pl WHERE pl.pseudo = :pseudo");
    $secure_query->bindValue('pseudo', $pseudo, PDO::PARAM_STR);
    $rep = $secure_query->execute();

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Passer une variable String à une fonction
    Par dsalerne dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 30/07/2012, 19h02
  3. Recuperer le nom d'une variable dans une variable String
    Par aliwassem dans le forum Langage
    Réponses: 11
    Dernier message: 23/10/2009, 12h38
  4. Réponses: 1
    Dernier message: 22/06/2007, 15h40
  5. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41

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