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 :

unknown column in 'where clause' [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut unknown column in 'where clause'
    Bonjour,

    je viens faire appel à vous car j'ai un soucis ac mon formulaire de connection, en effet lorsque j'entre mes identifiants, il est censer me rediriger mais il me dit :" unknown column 'Benjamin' in 'where clause' " Benjamin représentant le nom d'utilisateur.
    Je vous laisse mon code ci-dessous

    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
    <?php	
    	if (isset($_POST['logger'])){
    		$login = ($_POST['logger']);
    	}else{
    		echo("Veuillez entrer votre login");
    	}
    	if (isset($_POST['pass'])){
    		$pass = md5($_POST['pass']);
    	}else{
    		echo("Veuillez entrer votre mot de passe");
    	}
    		if($login && $pass){
    			include('connexion.php');
     
    			$query = "SELECT login FROM logins WHERE login=".$_POST['logger']."";
    			$result = mysql_query($query) or die ('Erreur : Impossible de se connecter '.mysql_error());
    			if(mysql_num_rows($result) == 0){
    				echo("le nom d'utilisateur '$login' n'existe pas");
    			}else{
    				$row = mysql_fetch_array($result);
    				if($_POST['pass'] != $row['pass']){
    					echo("Votre mot de passe est incorrect");
    				}else{
    					header('Location: Accueil.php');
    					mysql_close();
    				}
    			}
    		}else{
    			echo ("Veuillez entré un nom d'utilisateur et/ou un mot de passe");
    		}
    ?>
    J'ai tester avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '".$_POST['logger']."'";  ".$login."";
    et d'autres mais cela ne fonctionne pas.

    est ce que quelqu'un connait ce problème?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT login FROM logins WHERE login='".$_POST['logger']."'";

    de tout facon c'est simple avant de faire ta requête, fait un echo de $query tu vois bien ce que va rendre le SQL, et protège tes valeurs t'es soumis aux injections la

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    petite rectification que je n'ai pas faite lorsque je faisais des test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT * FROM logins WHERE login = ".$_POST['logger']."";

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    Bonjour stealth35 ,

    merci pour ta réponse, cependant j'avais déjà testé en ajoutant des côtes et dès lors lorsque je clique pour me connecté, il veut que je fasse un débogage.. est-ce commun? (je fais mes test sous firefox)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    Bonjour stealth35 ,

    merci pour ta réponse, cependant j'avais déjà testé en ajoutant des côtes et dès lors lorsque je clique pour me connecté, il veut que je fasse un débogage.. est-ce commun? (je fais mes test sous firefox)

    de plus comment se proteger des injections?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    j'ai tenté de faire un echo de $query comme tu me l'as conseillé mais il m'affiche un "Parse error [...] on line 18" c'est à dire la ligne de fermeture "?>"
    Je t'avoue que je ne comprend pas bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']"'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    je suis désolé je suis un peu novice en la matière, pourriez vous m'aider à comprendre?

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu semble avoir quelques problème avec la concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $logger = $_POST['logger'];
    $query = 'SELECT * FROM logins WHERE login='.$logger;
    //Ou si logger est une chaine
    $query =  'SELECT * FROM logins WHERE login=\''.$logger.'\';
    $result = mysql_query($query);
    echo $query;
    note : Insérer un paramètre post sans aucune vérification préalable est fortement déconseillé
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par benjamin002 Voir le message
    j'ai tenté de faire un echo de $query comme tu me l'as conseillé mais il m'affiche un "Parse error [...] on line 18" c'est à dire la ligne de fermeture "?>"
    Je t'avoue que je ne comprend pas bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']"'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    je suis désolé je suis un peu novice en la matière, pourriez vous m'aider à comprendre?
    normale t'as oublié le .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']."'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    utilise sprintf si t'es pas a l'aise avec ca


    Citation Envoyé par grunk Voir le message
    Tu semble avoir quelques problème avec la concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = 'SELECT * FROM logins WHERE login='.$_POST['logger'];
    //Ou
    $query =  'SELECT * FROM logins WHERE login=\'.$_POST['logger'].'\';
    $result = mysql_query($query);
    echo $query;
    note : Insérer un paramètre post sans aucune vérification préalable est fortement déconseillé
    c'est encore pire comme ca...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    désolé ce n'était qu'une simple erreur de réecriture je travaille sur 2 pc, je recopie donc d'un pc à l'autre manuellement, d'ou l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']."'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    qui n'est pas présente sur mon code.

    il me donne toujours le message suivant:

    Parse error: par error in ... on line 18
    qui représente toujours ma ligne de fermeture du code php: ?>

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    t'as gardé les "..." après die ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    J'ai donc essayé avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']."'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='".$login."'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    ($login étant récupéré plus haut)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login='.$login.'";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [...]
    $query = "SELECT * FROM logins WHERE login=".$login."";
    $result = mysql_query($query) or die...
    echo ('".$result."');
    ?>
    Mais je suis toujours en présence d'une parse error sur la ligne de fermeture

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ca répond pas a ma question ...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    re stealth35,

    en ce qui concerne mon or die voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($query) or die ('Erreur : Impossible de se connecter '.mysql_error());
    J'ai aussi tester avec les doubles cote, mais cela ne solutione pas le pb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($query) or die ("Erreur : Impossible de se connecter ".mysql_error());

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = "SELECT * FROM logins WHERE login='".$_POST['logger']."'";
    var_dump($query);
    exit;
    et dis moi ce que rend le var_dump

    ps : les or die c'est pas beau en plus c'est or exit, pour debugger ca il faut activer le mysql.trace_mode

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    ouaa je craque ahah

    j'ai tester ton code, et il me met toujours parse error sur la ligne 18 (celle de fermeture..)

    il y a des choses qui m'échappent.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    ok ton code me récupère ceci:

    string(42) "SELECT $ FROM logins WHERE login='William'"
    Il récupère donc bien ce que je tape

    (je ne te dirais pas ce que j'ai oublié auparavant ahah c'était vraiment bete)

  17. #17
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    donc c'est OK (par contre il sort d'où ton $ ?)

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    une faute de frappe encore il correspond à un *

    donc il effectue bien ma requête mais mon pb n'est pas résolu sur ce code:

    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
    <?php	
    	if (isset($_POST['logger'])){
    		$login = ($_POST['logger']);
    	}else{
    		echo("Veuillez entrer votre login");
    	}
    	if (isset($_POST['pass'])){
    		$pass = md5($_POST['pass']);
    	}else{
    		echo("Veuillez entrer votre mot de passe");
    	}
    		if($login && $pass){
    			include('connexion.php');
     
    			$query = "SELECT * FROM logins WHERE login='".$_POST['logger']."'";
    			$result = mysql_query($query) or die ('Erreur : Impossible de se connecter '.mysql_error());
    			if(mysql_num_rows($result) == 0){
    				echo("le nom d'utilisateur '$login' n'existe pas");
    			}else{
    				$row = mysql_fetch_array($result);
    				if($_POST['pass'] != $row['pass']){
    					echo("Votre mot de passe est incorrect");
    				}else{
    					header('Location: Accueil.php');
    					mysql_close();
    				}
    			}
    		}else{
    			echo ("Veuillez entré un nom d'utilisateur et/ou un mot de passe");
    		}
    ?>
    il me demande si je veux déboguer:

    Une exception win32 non gérée s'est produite dans httpd.exe
    le fait de déboguer ou non ne résoud pas le problème

  19. #19
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    si tu fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql_query($query) or die ('Erreur : Impossible de se connecter '.mysql_error());
    exit('ok');
    c'est 'ok' ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 123
    Par défaut
    oui il y a bien "ok" qui apparait

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Unknown column [] in where clause
    Par charlie404 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2014, 08h28
  2. [MySQL] Unknown column '...' in 'where clause'
    Par kopax dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/04/2010, 17h46
  3. [MySQL] Unknown column .. in 'where clause'
    Par lpldtrllt dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 27/05/2009, 11h20
  4. [MySQL] Unknown column '' in 'where clause'
    Par Creanet dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 15/04/2009, 10h52
  5. Réponses: 2
    Dernier message: 01/01/2009, 20h52

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