8722 sujets

Développement web côté serveur, CMS

Bonjour, je vou explique mon probléme :

Je dois récupérer des références de produits dans une BDD.
Les références sont de types varchar(255) dans ma base.
Certaines références comporte des lettres et il met impossible de récupérer ces références.

Voici mon code de récupération :


	$ref=$_GET['ref'];
	$produit=Gestion::lister("produit","ref", $ref,null,null, false);


cella me génère la requete suivante :


SELECT * FROM produit WHERE ref='00030014A'


et lorsque que je vais sur ma page voici le message d'erreur :

Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column '00030014A' in 'where clause'


J'ai tout essayé de mettre entre simple cote ou double cote cela fait 2heures que je me tire les cheveux !

Je suis quasiment sur que l'erreur est enfantine c'est pour cela que je viens vers vous qui avez le cerveau certainement plus frais que le miens après tant d'effort Smiley biggol
Bonjour,
A mon avis, "ref" est un mot-clé réservé (à vérifier), et donc je pense que c'est ça qui fait planter ta requête. Essaie de renommer ta colonne "ref" en "reference" par exemple.

Sinon, as-tu essayé d'exécuter directement ta requête dans ton phpMyAdmin? Est ce que ça t'affiche la même erreur?
Salut, merci mais je pense pas que ref soit réservé, et puis de toute facon quand il n'y a pas de lettre dans la ref la requête marche.

Et ouai la requete dans phpmyadmin me retourne bien un résultat
Autre piste, tu as vérifié que tu n'as pas inversé l'ordre des paramètres?
Parce qu'apparemment, il cherche une colonne nommée '00030014A', et le seul moment où tu lui fournis cette info, c'est là:
$produit=Gestion::lister("produit","ref", $ref,null,null, false);

Est ce que tu es sûr de la requête générée (as-tu fais un echo dessus)?
es-tu certain que la requête possède bien les ' ? Parce que là manifestement, la requête envoyée est :

SELECT * FROM produit WHERE ref=00030014A

ton 00030014A est considéré comme un champs. Et si ça marche sans la lettre, c'est parce que le programme le considère comme étant un "int".
Voici la requète générée :


SELECT * FROM produit WHERE ref='01208000CP'


Et voici comment je la génère dans une classe PDO:


$sql="SELECT  * FROM ".$table." WHERE ". $primary ."='".$valueid."' ".$complement;