Page 1 sur 1

Update mysql ne fonctionne pas

Posté : 23 juil. 2012, 13:39
par fabx22
Bonjour,

J'ai un problème avec mon code qui doit mettre à jour une base de donnée.

Code : Tout sélectionner

$connect = mysql_connect('localhost','root','root') or die ("erreur de connexion"); mysql_select_db('texts',$connect) or die ("erreur de connexion base"); $language=$_POST['language']; $text1=$_POST['text1']; $text2=$_POST['text2']; $text3=$_POST['text3']; $language=$_POST['language']; mysql_query("UPDATE table1 SET ".$language."=".$text1." WHERE text=1"); mysql_query("UPDATE table1 SET ".$language."=".$text2." WHERE text=2"); mysql_query("UPDATE table1 SET ".$language."=".$text3." WHERE text=3"); printf ("Lignes modifiées : %d\n", mysql_affected_rows()); mysql_close();
Il me retourne " Lignes modifiées : -1 " et les données ne changent pas...

Merci d'avance :)
Fabx22

Re: Update mysql ne fonctionne pas

Posté : 23 juil. 2012, 14:37
par xTG
-1 ou autrement dit qu'une erreur est survenue je dirai.
Regardes ce que retournes mysql_error().

N.B : mysql_real_escape_string() pour échapper des variables qu'on insère dans une requête, sinon pof l'injection SQL. ;)

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 09:10
par fabx22
Merci
voilà ce que ça donne,

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= texte de la variable $text3

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 09:16
par xTG
N.B : mysql_real_escape_string() pour échapper des variables qu'on insère dans une requête, sinon pof l'injection SQL. ;)

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 09:51
par fabx22
Hello,
J'ai cherché comment utiliser mysql_real_escape_string mais je ne comprend pas où l'intégrer

Merci

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 09:52
par xTG
$variable = $_POST['variable']; // chaîne non protégée
$variable = mysql_real_escape_string($variable); // la chaîne est maintenant protégée et peut être utilisée dans une requête SQL

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 10:15
par fabx22

Code : Tout sélectionner

$text1=mysql_real_escape_string($_POST['text1']); $text2=mysql_real_escape_string($_POST['text2']); $text3=mysql_real_escape_string($_POST['text3']); $language=$_POST['language']; mysql_query('UPDATE table1 SET '.$language.'='.$text1.' WHERE text=1'); mysql_query('UPDATE table1 SET '.$language.'='.$text2.' WHERE text=2'); mysql_query('UPDATE table1 SET '.$language.'='.$text3.' WHERE text=3'); echo mysql_error();
En faisant comme ça il change les caractères mais c'est toujours le même problème :(

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 10:53
par xTG
A faire aussi pour $language.
Et aussi text est un mot clef il me semble, donc notes le ainsi :
WHERE `text`=1

Re: Update mysql ne fonctionne pas

Posté : 24 juil. 2012, 14:10
par fabx22
J'ai enfin trouvé le problème.

mysql_query('UPDATE table1 SET '.$language.'="'.$text1.'" WHERE text=1');

il manquait juste deux guillemets. ^^

Merci beaucoup pour ton aide ;)

Fabx22

Re: Update mysql ne fonctionne pas

Posté : 25 juil. 2012, 12:33
par moogli
salut,

pour info en SQL c'est des ' qu'il faut utiliser pour délimiter les chaines de caractère et non des "

donc
mysql_query('UPDATE table1 SET '.$language.'=\''.$text1.'\' WHERE text=1');

@+