Forum Clubic

Probleme php mysql

bonjour, j’ai un probleme avec mysql qui ne veut pas d’une variable chaine de caractère quand je veux modifier quelque chose, je vous montre le code ce sera plus clair:

mysql_query('UPDATE truc SET ‘’ . $variable . ‘’ = qqchose WHERE nom=‘nom’;

ma variable $variable est une chaine de caractère et mysql me dit que c’est une erreur de syntaxe. Des solutions ?

Salut,

‘$variable’ = qqchose signifie que tu affectes la valeur du champ qqchose à la chaine $variable !?
de plus la fin de ta ligne est étrange :
WHERE nom=‘nom’;
tu ne concatène pas “nom” (qui de toute façon n’est pas une varibale) et tu ne protège pas non plus tes quotes… et tu ne fermes même pas ta parenthèse!

la fin de ma ligne de code est pas importante, je l’ai mise pour que ce soit plus comprehensible mais j’ai fait des tests et je suis donc sur que c’est de ma variable que vien le probleme. Ensuite:

WHERE nom=‘nom’); signifie que je veux qu’il me trouve l’entrée dans la table “truc” ou la valeur de “nom” est égale a “nom”.

‘’ . $variable . ‘’ = qqchose signifie que je veux qu’il me modifie la valeur de mon entrée dont le nom est le nom inscrit dans ma variable et qu’il lui donne la valeur “qqchose”

par exemple si ma table répertorie les élèves d’une classe avec le nom et l’age et que je voudrai modifier l’age, ça donnerai:

mysql_query('UPDATE classe SET ‘’ . $variable . ‘’ = 17 WHERE nom=‘jean-paul’);

ici $variable = “age”, je modifie donc l’age de jean-paul.

donc c’est bien ce que je disais, a mon avis tu as 2 erreurs:

nom=‘jean-paul’ -> les quotes ne sont pas protégées (nom=‘jean-paul’)
‘’ . $variable . ‘’ = 17 -> $variable est inclus comme une chaine et non comme un champ (’ . $variable . ’ = 17)


et il manque une quote pour fermer la requête -> nom=\'jean-paul\''

pour jean-paul c’est pas la syntaxe exact, mais celle dans mon code es bonne, j’ai bien précisé que ce n’était pas sur cela que je demandait de l’aide. pour la variable tu a raison, j’aimerai juste savoir si il existe une façon de faire comprendre a mysql qu’il sagit d’un champ.

oui je te l’ai mis entre parenthèses : faut simplement pas mettre de quotes dans la requête qui sera lue par mysql (les quotes ça signifie pour lui que c’est une chaine de caractères)