Unknown column ' ' in 'where clause'

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

  • Votes
  • Date
  • Date décroissante
  1. Webmaster
    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

    1. 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
      }
      
         }
          }
      ?>
      
      1. 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. Enlève sa mysql_real_escape_string ...
          Signature non conforme ==> Supprimée
          Modération CCM
          1. Webmaster
            Au contraire il faut le laisser, ça protège des injections SQL !
          2. @JeffAh 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 !