Update mysql ne fonctionne pas

fabx22
Invité n'ayant pas de compte PHPfrance

23 juil. 2012, 13:39

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

ViPHP
xTG
ViPHP | 7331 Messages

23 juil. 2012, 14:37

-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. ;)

Petit nouveau ! | 4 Messages

24 juil. 2012, 09:10

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

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2012, 09:16

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

Petit nouveau ! | 4 Messages

24 juil. 2012, 09:51

Hello,
J'ai cherché comment utiliser mysql_real_escape_string mais je ne comprend pas où l'intégrer

Merci

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2012, 09:52

$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

Petit nouveau ! | 4 Messages

24 juil. 2012, 10:15

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 :(

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2012, 10:53

A faire aussi pour $language.
Et aussi text est un mot clef il me semble, donc notes le ainsi :
WHERE `text`=1

Petit nouveau ! | 4 Messages

24 juil. 2012, 14:10

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 juil. 2012, 12:33

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

@+
Il en faut peu pour être heureux ......