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');
@+