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 :

erreur champ ' ' inconnu dans where clause [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut erreur champ ' ' inconnu dans where clause
    salut tout le monde,

    une partie de mon code fonctionne ainsi
    je récupère la valeur login de mon formulaire puis je cherche est ce quelle existe dans ma base.sachant que la valeur du test que j'utilise n'est pas dans ma table ce qui est normal c'est que je dois pas avoir des erreurs mais malheureusement j'ai une erreur que vous trouverez dans le dossier zip.

    vous trouverez ci joint mon code
    aidez moi svp
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    N'oublie pas de proteger les variables que tu injectes dans des requetes.

    Si ton champ login est une chaine, il faut l'encadrer de guillemets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "SELECT * FROM authentification WHERE LOGIN='" . mysql_real_escape_string($_POST['log'] . "'";
    Je suis par contre un peu perplexe sur l'erreur que tu nous indiques.
    Tu pourrais nous l'indiquer en entier et nous dire sur quelle ligne elle se produit ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut,
    si je vous ai donne l'erreur telle qu'elle s'affiche sur mon écran j'ai même donné une copie de la page pour que vous puissiez avoir une idée sur le problème .
    pour mieux vous expliquer les champs que j'ai sont tous des chaînes de caractères dans la base donc pourquoi faire un changement donc????

    mais ce que vous m'avez donné maintenant comme solution n'a pas réglé le problème.

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Es-tu sûr que le champ existe dans la table ?? C'est la seule source d'erreur possible...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut,

    je suis sure et certaine que la table ne contient pas le login que je sais en plus la table est vide elle ne contient rien de rien

    merci pour votre aide

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Peux-tu nous fournir les éléments suivants, stp :

    • La structure de la table (pas le contenu)
    • La requête SQL qui est effectuée si elle est différente de celle du fichier en pièce jointe


  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut,
    voila la sructure de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE `authentification` (
      `LOGIN` varchar(20) NOT NULL,
      `M2P` varchar(20) NOT NULL COMMENT 'mot de passe',
      PRIMARY KEY  (`LOGIN`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    et pour la requte elle est la meme et j'ai ajoute le changement qu'on m'a propose au debut a propose de le convertion du type de la variable

    merci pour votre aide

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Essayes avec cette portion de 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
    $cp = $_POST['cp'];
    $nom = $_POST['nom'];
    $prenom = $_POST['pren'];
    $login = $_POST['log'];
    $password = $_POST['pass'];
     
    $query = "SELECT * FROM authentification WHERE LOGIN = '" . mysql_real_escape_string($login) . "'";
    $result = mysql_query($query) or die(mysql_error());
    $nbResults = mysql_num_rows($result);
    if($nbResults > 0)
    {
        $msg = 'Ce login est deja utilise veuillez saisir un autre login';
    }
    else
    {
        $query1= "INSERT INTO authentification VALUES ($login, $password)";
        $result1= mysql_query($query1) or die(mysql_error());
        $query2= "INSERT INTO authent_prof VALUES ($login, $cp)";
        $result2= mysql_query($query2) or die(mysql_error());
        $query3= "INSERT INTO professeur(CP, NOM, PRENOM) VALUES ($cp, $nom, $prenom)";
        $result3= mysql_query($query3) or die(mysql_error());
    }
    L'erreur que tu nous as donné dans le zip, c'est celle issue du mysql ou c'est une erreur personnalisée que tu envoies ??
    Je demande ça parce que c'est pas normal d'obtenir cette erreur et ce même si log est vide et de même pour la table.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il te manque les guillemets partout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $query1= "INSERT INTO authentification VALUES ('$login', '$password')";
    $result1= mysql_query($query1) or die(mysql_error());
    $query2= "INSERT INTO authent_prof VALUES ('$login', '$cp')";
    $result2= mysql_query($query2) or die(mysql_error());
    $query3= "INSERT INTO professeur(CP, NOM, PRENOM) VALUES ('$cp', '$nom', '$prenom')";
    $result3= mysql_query($query3) or die(mysql_error());
    En tout cas je me demande bien d'ou sort ton message d'erreur parce qu'avec ton code de départ j'obtiens un classique
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut,
    j'ai essaye ce que vous venez de me donnez et j'ai toujours le meme probleme?
    pour l'erreur j'ai enregistrer la page a pertir de mon seveur telle qu'elle est et je lai mis dans le dossier zip
    je vous explique:
    1)fsfgg: ne sont que des lettres que jai mis pour savoir est ce que mon serveur poste sur la page php ou non car javais un autre probleme au debut que jai resolu.
    2)succes de connexion: un message que jai mis pour savoir est ce que je me connecte a la base ou non
    3)Champ 'bousta' inconnu dans field list: c'est celle la lerreur qui minteresse maintenant le mot bousta c'est le login que je saisi pour tester le programme.

    merci infiniment pour votre aide

  11. #11
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Testes la requête dans phpmyadmin pour voir le résultat...
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM authentification WHERE LOGIN = 'bousta';
    Et quel est-il ?

    @Sabotage : effectivement, j'ai sauté toute cette partie

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut,
    d'apres mes modestes connaissances dans le langage php car je suis une debutante et j'apprend php toute seule, je crois que les simples cotes sont a mettre pour une valeur comme 'alain' sinon si jai une variable c'est pas obligatoire de les mettre.
    si c'est faux vous me le dites svp

    merci d'avance

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    en fait ici tu reconstitues une chaine SQL.
    dans ta chaine SQL au final tes valeurs, lorsqu'elle ne sont pas numeriques, doivent etre encadrés de guillemets (mysql est gentil est prends simple ou double).
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "SELECT * FROM table WHERE login='$login';
    // ca donne SELECT * FROM table WHERE login='toto';
    Teste la requête dans phpmyadmin comme te l'indique Kerod et redonne nous ton code actuel avec les modifications que tu as faites.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    salut
    j'ai reussis grace a vos remarques et vos conseils,j'ai fait les simples cotes que vous m'avez demande et le probleme que j'ai decouvert c'est qu'il fallait mettre une insertion suivant la logique de ma base avant lautre voila le dernier 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
     
    $cp = $_POST['cp'];
    $nom = $_POST['nom'];
    $prenom = $_POST['pren'];
    $login = $_POST['log'];
    $password = $_POST['pass'];
     
    $query = "SELECT * FROM authentification WHERE LOGIN = '" . mysql_real_escape_string($login) . "'";
    $result = mysql_query($query) or die(mysql_error());
    $nbResults = mysql_num_rows($result);
    if($nbResults > 0)
    {
        $msg = 'Ce login est deja utilise veuillez saisir un autre login';
     
    }
    else
    {
    	$query3= "INSERT INTO professeur(CP, NOM, PRENOM) VALUES ('$cp', '$nom', '$prenom')";
    	$result3= mysql_query($query3) or die(mysql_error());
        $query1= "INSERT INTO authentification VALUES ('$login', '$password')";
    	$result1= mysql_query($query1) or die(mysql_error());
    	$query2= "INSERT INTO authent_prof VALUES ('$login', '$cp')";
    	$result2= mysql_query($query2) or die(mysql_error());
    }
    merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] erreur WHERE Champ 'F' inconnu dans where clause
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/03/2013, 11h54
  2. [MySQL] Erreur :1054Champ inconnu dans where clause
    Par Denis Placé dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/03/2013, 08h45
  3. [MySQL] Champ '$demande' inconnu dans where clause
    Par boxster77 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/11/2010, 16h52
  4. [MySQL] Champ 'Kaskroot' inconnu dans where clause
    Par visqueu dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/11/2010, 13h50
  5. Champ inconnu dans where clause
    Par sam01 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/06/2010, 12h48

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