Unknown column ' ' in 'where clause'

Fermé
hinda87 Messages postés 33 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 19 février 2009 - 25 juil. 2008 à 12:33
hinda87 Messages postés 33 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 19 février 2009 - 25 juil. 2008 à 12:59
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
A voir également:

4 réponses

Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
25 juil. 2008 à 12:36
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
hinda87 Messages postés 33 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 19 février 2009 2
25 juil. 2008 à 12:54
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
Squad-G Messages postés 66 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 25 octobre 2010 5
Modifié par baladur13 le 23/10/2010 à 13:48
Enlève sa mysql_real_escape_string ...
Signature non conforme ==> Supprimée
Modération CCM
0
Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
25 juil. 2008 à 12:36
Au contraire il faut le laisser, ça protège des injections SQL !
0
Squad-G Messages postés 66 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 25 octobre 2010 5 > Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023
25 juil. 2008 à 12:40
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
hinda87 Messages postés 33 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 19 février 2009 2
25 juil. 2008 à 12:59
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