Page 1 sur 1

Problème Champ inconnu

Posté : 22 déc. 2005, 17:03
par Corky_du_PHP
Salut,

J'ai un petit problème avec un script :
$sql = 'SELECT marque,txt,categ FROM produit WHERE id='.$id.'';  

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    echo '<b>'.$data['marque'].' '.$data['txt'].'</b>'; 
$categid=$data['categ'];    
$sql1 = 'SELECT designation FROM categories WHERE categid='.$categid.'';
$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error()); 
$result1 = mysql_fetch_assoc($req1);
echo $result1['designation'];
}
Voilà, le while est bien exécuté, j'ai une ligne de résultats (marque et txt) mais ensuite il y a écrit : Erreur SQL ! SELECT designation FROM categories WHERE categid=2
Champ '2' inconnu dans where clause

Pourtant cela existe bien dans ma table categories.

Pour expliquer le script : Je souhaiterai qu'après chaque ligne de résultats, on met le numéro de la catégorie ($categ) en mémoire et on va chercher sa designation dans la table "categories" et l'afficher

Merci à ceux qui pourront m'aider! :wink:

Posté : 22 déc. 2005, 17:14
par ouckileou
Salut,

quel est le type de ta colonne "categid" ?
Si elle est de type numérique, ta requête devrait passer.
Mais si elle est de type "chaine de caractères" (varchar, text...) tu dois mettre des quotes (') autour du 2 pour que MySQL comprenne bien que c'est une valeur, et non un nom de colonne.
Ici, il croit que c'est un nom de colonne.

Et pour inciter les gens à t'aider, pense à utiliser les balises
[/b] quand tu postes du code PHP ;)
J'édite ton message pour les rajouter car tu es Invité donc tu ne peux pas le faire.

Posté : 22 déc. 2005, 17:28
par Invité
C'est un VARCHAR (j'ai parlé de numéro pour facilité l'exemple)
$categid= boitier6

Hum... les quotes ca se placent ou? ... :D

$sql1 = 'SELECT designation FROM categories WHERE categid=('.$categid.')'; ... ca marche pas :?

Merci en tout cas! si tu pouvais m'éclairer ca le ferai! :wink:

Posté : 22 déc. 2005, 17:31
par ouckileou
Tu places les quotes autour de ta valeur, elles font partie de ta requête SQL :

Code : Tout sélectionner

SELECT designation FROM categories WHERE categid='$categid'
donc pour le PHP :
$sql1 = "SELECT designation FROM categories WHERE categid='".$categid."'"; 
// ou
$sql1 = 'SELECT designation FROM categories WHERE categid=\''.$categid.'\''; 

Posté : 22 déc. 2005, 17:35
par Invité
Merci beaucoup, ca marche!!!!
8)
Passes de bonnes fêtes!

Posté : 22 déc. 2005, 17:38
par ouckileou
Merci toi aussi.

Je met [Résolu] alors.
Pense à t'inscrire la prochaine fois ;)