Page 1 sur 1

SELECT et Concaténation

Posté : 30 avr. 2012, 10:26
par Freewal
Bonjour,


Je vous remercie d’abord du précieux temps que vous pouvez me consacrer. J'ai passé un long moment à chercher la solution à mon problème. Je début en php.

je cherche le moyen de récurer le résultat d'un SELECT dans une variable que j'ai nommé $recherche :
 $recherche = "SELECT  NumeroFiche
FROM  Fiche
WHERE  Nom LIKE '$nom'
AND  Telephonne ='$telephonne'
AND  Prenom LIKE  '$prenom'
LIMIT 0 , 1"
;
Les variables nom, telephonne, et prénom renvoient les bonnes valeurs (ça fonctionne dans un INSERT.)

Or comme vous le devinez ça ne fonctionne pas, la fonction me renvois une erreur de syntaxe. Je précise que ça marche parfaitement dans MySQL en remplacent nom, téléphone et prénom. Je suspecte une erreur de concaténation.

Merci pour votre aide ;)

Re: SELECT et Concaténation

Posté : 30 avr. 2012, 10:59
par xTG
Je dirais plutôt une quote ou autre. ;)
Il y a des fonctions de protection contre les injections :
$recherche = "SELECT  NumeroFiche
FROM  Fiche
WHERE  Nom LIKE '" . mysql_real_escape_string($nom) . "'
AND  Telephonne ='" . mysql_real_escape_string($telephonne) . "'
AND  Prenom LIKE  '" . mysql_real_escape_string($prenom) . "'
LIMIT 0 , 1"
;
Et puis pourquoi utiliser LIKE ? Il semble que tu saches ce que tu recherches, donc un égal serait mieux.
Sinon il faut entourer ta chaîne avec des % pour faire fonctionner correctement le LIKE. (pour lui dire que cela peut être le milieu d'une chaîne)

Re: SELECT et Concaténation

Posté : 30 avr. 2012, 12:02
par Freewal
Merci pour ta réponse !

Après modification j'ai une erreur :

Code : Tout sélectionner

Champ [i]nomrechercher[/i] inconnu dans where clause
Pourtant nomrechercher existe bel et bien, j'ai vérifié dans phpMyAdmin. Quand je fais la recherche suivant manuellement :
SELECT  `NumeroFiche` 
FROM  `Fiche` 
WHERE  `Nom` =  'nomrechercher'
AND  `Prenom` =  'prenomrechercher'
AND  `Telephonne` = 'telephonnerechercher'
LIMIT 0 , 1
ça me renvoie la valeur que je recherche. J'aimerai réutiliser cette valeur.

Re: SELECT et Concaténation

Posté : 30 avr. 2012, 12:27
par xTG
Cette erreur indique que la requête est mal formée, car c'est sensé être une valeur et non un nom de champ.
Affiches $recherche pour voir ce qu'il envoie au SGBD.