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 "motClef" in WHERE clause [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut unknown column "motClef" in WHERE clause
    Bonjour,

    Je ne comprend pas la chose suivante : j'ai deux requêtes apparemment identique, une fonctionne et pas l'autre.

    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
     
    // on récupère le tableau et on le filtre avec intval
    $luAdmin = array_map( 'intval', $_POST['lu'] );
     
    //on va chercher tous les id du tableau, afin de faire une boucle
    $select="SELECT id FROM wikiLienBrise WHERE id IN (".implode(',', $luAdmin).") ";
    $resultat = mysql_query("$select");
    while 
    ($R = mysql_fetch_array($resultat)) 
    {
    $masquer="UPDATE  `wikiLienBrise` SET lu=1 WHERE id ='".$R['id']."'"; 
    mysql_query("$masquer"); 
    ;}
    mysql_free_result($resultat);
     
     
    // REQUETE 2
    $motClef = array_map( 'mysql_real_escape_string', $_POST['MotClef'] );
    $select="SELECT id FROM articles WHERE motClef IN (".implode(',', $motClef).") ";
    $resultat = mysql_query("$select") OR die(mysql_error());
    while 
    ($R = mysql_fetch_array($resultat)) 
    {
    $masquer="UPDATE  `articles` SET nbrLiens=nbrLiens-1 WHERE id ='".$R['id']."'"; 
    mysql_query("$masquer"); 
    ;}
    mysql_free_result($resultat);
    Donc ici, la première requête fait ce qu'elle a à faire

    Par contre, la seconde ne fonctionne pas, elle me renvoit l'erreur du titre.

    La différence entre les deux ? $_POST['lu'] est un tableau avec des chiffres, tandis que $_POST['MotClef'] est un tableau avec des lettres (des mots, sans espaces ni accents, éventuellement séparés par des traits d'union).

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Pour rechercher dans une base de données des valeurs de type chaines de caractères, il faut les encadrer par des apostrophes simples alors que pour les valeur numériques ca n'est pas le cas. C'est pour ca que ca marche pour les nombres et pas les lettres.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut
    Ah d'accord, ta piste à l'air d'être la bonne koopajah.

    Simplement, sans vouloir abuser, je dois les placer où les apostrophes simples ?

    Parce que c'est un peu "touffu", si je puis dire.

    J'ai cette solution là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $select="SELECT id FROM articles WHERE motClef IN '(".implode(',', $motClef).")' ";
    
    Ou celle là :
    $select="SELECT id FROM articles WHERE motClef IN (".implode(',', '$motClef').") ";

    (je fais les tests directement en ligne, alors je préfère éviter de trop tester en direct...)

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    JE testerai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select="SELECT id FROM articles WHERE motClef IN ('".implode("','", '$motClef')."')
    mais je te promets rien

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut
    Oui alors, j'ai essayé avec les quotes comme tu dis et ça m'affiche ça, justement pour la ligne de la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: implode() [function.implode]: Bad arguments.

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    sans les ' ' autour de $motClef ca marchera surement mieux

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/01/2009, 20h52
  2. [MySQL] Unknown column 'where clause'
    Par boubourse92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/08/2007, 11h24
  3. Unknown column 'xx' in 'where clause'
    Par SaeZ dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/05/2006, 17h25

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