Unknown column ' ' in 'where clause'

hinda87 Messages postés 35 Statut Membre -  
hinda87 Messages postés 35 Statut Membre -
Bonjour,
<?php

if (isset($_POST['mot_de_passe']) &&  isset($_POST['nom']) && isset($_POST['prenom'])) 
{  mysql_connect("localhost", "root", "");
        mysql_select_db("tests");
    
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
		$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
        $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
		$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom ='. addslashes($nom) .' && prenom ='. addslashes($prenom) .'')or die(mysql_error());
$donnees = mysql_fetch_array($reponse); 

le code suivant m'envoie l'erreur Unknown column ' ' in 'where clause' si je m'authentifie avec hind par exemple dans un formulaire
Configuration: Windows XP
Firefox 2.0.0.16

4 réponses

  1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Il faut entourer les valeurs avec des guillemets et remplacer "&&" par "AND" :

    if (isset($_POST['mot_de_passe']) &&  isset($_POST['nom']) && isset($_POST['prenom'])) 
    {  
            mysql_connect("localhost", "root", "");
            mysql_select_db("tests");
        
            $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
            $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']))­;
            $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_pas­se']));
            $reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom ="'. addslashes($nom) .'" AND prenom ="'. addslashes($prenom) .'"') or die(mysql_error());
    $donnees = mysql_fetch_array($reponse); 
    

    Jean-François Pillou

    Fondateur de CommentCaMarche.net

    4
  2. hinda87 Messages postés 35 Statut Membre 2
     
    merci jeff! il m'envoie aucune erreur pour le moment à l'affichage mais il n'exucute pas les boucles! ie il permet pas d'afficher la deuxieme page qui doit etre affichée aprés l'authentification :(
    je t'explique comme je l'ai fait tout à l'heure : mon code doit afficher deux pages la premiere pour l'authentification et le passage a la deuxieme page se fait en vérifiant que les coordonnées postées par l'utilisateur dans la premiere sont les memes que celles existées dans une base de donnée
    1
  3. Squad-G Messages postés 70 Statut Membre 5
     
    Enlève sa mysql_real_escape_string ...
    Signature non conforme ==> Supprimée
    Modération CCM
    0
    1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
       
      Au contraire il faut le laisser, ça protège des injections SQL !
      0
      1. Squad-G Messages postés 70 Statut Membre 5 > Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention  
         
        Ah oui c'est vrai ! Je suis habitué d'écrire via une fonction préfaite et qui fait tout pour moi et comme j'ai pas ré-écrit sa depuis très longtemps, j'avais oublié. Merci du rappel en tous cas !
        0
  4. hinda87 Messages postés 35 Statut Membre 2
     
    voici mon code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Page protégée par mot de passe</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
    
    
    <fieldset>
           <legend><strong>Vos coordonnées:</strong></legend>
    <form action="...;.php" method="post">
    <p>
           <label for="prenom"><strong>votre prenom</strong></label> :<br /> <input type="text" name="prenom" id="prenom" />
       </p>
       <p>
           <label for="nom"><strong>Votre nom</strong></label>:<br /> <input type="text" name="nom" id="nom" />
       </p>
        <p>
           <label for="password"><strong>Votre mot de passe</strong></label> :<br /> <input type="password" name="mot_de_passe" id="pseudo" />
       </p>
       </fieldset>
        <p>
    	
           <input type="submit" value="Valider"  /> <input type="reset" />
       </p>
    
    </form>
    
        </body>
    </html>
    
    
      <?php 
    
    
    if (isset($_POST['mot_de_passe']) AND  isset($_POST['nom']) AND isset($_POST['prenom'])) // Si la variable existe
     
    {
        if ($_POST['prenom'] != NULL AND $_POST['mot_de_passe'] != NULL AND $_POST['mot_de_passe'] != NULL) 
    {   mysql_connect("localhost", "root", "");
            mysql_select_db("tests");
    
            $nom = ($_POST['nom']);
    		$prenom = ($_POST['prenom']);
            $mot_de_passe = ($_POST['mot_de_passe']);
    		$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom =". addslashes($nom) ." && prenom =". addslashes($prenom) ."')or die(mysql_error());
    		$donnees = mysql_fetch_array($reponse);
    		while ($donnees['mot_de_passe'] == $mot_de_passe)
    {   mysql_close();
     
    ?>
        
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>..</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
            <form action="...php" method="post">
            
            ...........
           
        </body>
    
    
    <?php
    }
    
       }
        }
    ?>
    
    0