[MY SQL] Probleme pour mettre a jour une table [résolu]

Probleme pour mettre a jour une table [résolu] [MY SQL] - SQL/NoSQL - Programmation

Marsh Posté le 16-09-2007 à 23:57:26    

Alors voila je vous présente mon probleme ....
 
je reçois des données via POST que je compile en array ! donc jusque la tout va bien !  
 
alors apres je veux les mettre a jour dans ma DB !
 
je marque le code suivant :
 

Code :
  1. mysql_query("UPDATE maDB SET $set WHERE pres=$pres" ) or die(mysql_error());


 
et sur la page il me renvoit cette erreur :  
 

Citation :

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 'WHERE pres=romain' at line 1


 
J'ai essayé pas mal de version de mon code mais rien n'y fait c'est toujours le meme message !
 

Code :
  1. mysql_query("UPDATE maDB SET $set WHERE pres=" . $pres) or die(mysql_error());


 
merci à ceux qui me viendront en aide !  :)


Message édité par djmath56 le 17-09-2007 à 00:46:01
Reply

Marsh Posté le 16-09-2007 à 23:57:26   

Reply

Marsh Posté le 17-09-2007 à 00:06:15    

les chaines de caractères  ( en Mysql ) doivent etre entre '
 
mysql_query("UPDATE maDB SET $set WHERE pres='$pres'" )

Reply

Marsh Posté le 17-09-2007 à 00:07:27    

met des guillemets
commence par en vouloir à flo qui m'a grillé


---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:09:20    

hélas cela donne la meme chose et sa me marque sa :  
 

Citation :

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 'WHERE pres='romain'' at line 1


 
pareil mais avec les guillements en plus xD

Reply

Marsh Posté le 17-09-2007 à 00:12:17    

Ben ton champ pres dans la table, il est bien de type varchar ou text ?
ou alors, il te dit "near" ... ce qui veut dire que  l'erreur est avant le "WHERE" et donc dans le formatage de ton $set certainement


---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:12:18    

et sinon, tu peux nous faire aficher la requete complete ?  
genre faire $query  ="UPDATE maDB SET $set WHERE pres='$pres'"  
 
on gagnerai du temps ;)

Reply

Marsh Posté le 17-09-2007 à 00:13:41    

haha 1 sec, na !


---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:15:13    

Citation :

<?php
$db = mysql_connect("xxx", "xxx", "xxx" );
mysql_select_db("xxx", $db);
 
if (isset($_POST['nom'])) {
    $set = array (
 "nom" => $_POST['nom'],
 "ville" => $_POST['ville'],
 "trick" => $_POST['trick'],
 "skate" => $_POST['skate'],
 "planche" => $_POST['planche'],
 "musique" => $_POST['musique'],
 "aime" => $_POST['aime'],
 "aimepas" => $_POST['aimepas'],
 "extra" => $_POST['extra']);
 $pres = $_POST['pres'];
mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
 ?>


 
alors voici la requete entiere ... mon pres ds la DB est un TEXT .. et sinon la source ds mon fichier c un POST

Reply

Marsh Posté le 17-09-2007 à 00:18:47    

TheRom_S a écrit :

haha 1 sec, na !


me vengerai

djmath56 a écrit :

Citation :

<?php
$db = mysql_connect("xxx", "xxx", "xxx" );
mysql_select_db("xxx", $db);

 

if (isset($_POST['nom'])) {
    $set = array (
 "nom" => $_POST['nom'],
 "ville" => $_POST['ville'],
 "trick" => $_POST['trick'],
 "skate" => $_POST['skate'],
 "planche" => $_POST['planche'],
 "musique" => $_POST['musique'],
 "aime" => $_POST['aime'],
 "aimepas" => $_POST['aimepas'],
 "extra" => $_POST['extra']);
 $pres = $_POST['pres'];
mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
 ?>

 

alors voici la requete entiere ... mon pres ds la DB est un TEXT .. et sinon la source ds mon fichier c un POST


ta syntaxe des set est fausse

 

tu dois faire UPDATE table SET truc='bidule', machin='caca' WHERE nom='romain"

 

de plus utiliser directement des valeurs issue de post est assez dangereux
si par exmeple $_POST['plance'] contient la valeur '; DROP TABLE dcdteam_presentation; # tu risque d'avoir des soucis


Message édité par flo850 le 17-09-2007 à 00:20:21
Reply

Marsh Posté le 17-09-2007 à 00:20:05    

Ouai mais bon j'me disais que comme set est un array et ke le sql est un language de feignasse ...ba j'me disais que sa aurai été bon xD

Reply

Marsh Posté le 17-09-2007 à 00:20:05   

Reply

Marsh Posté le 17-09-2007 à 00:21:28    

djmath56 a écrit :

Ouai mais bon j'me disais que comme set est un array et ke le sql est un language de feignasse ...ba j'me disais que sa aurai été bon xD


 
je ne sais pas quoi te repondre. Tu utilise une syntaxe qui est completement pifometrique et tu te demande pourquoi ca marche pas  [:proy]

Reply

Marsh Posté le 17-09-2007 à 00:24:01    

Je debute, je m'aide de tuto et donc avec ces tuto g deja creer des scripts (en copier coller) ou la syntaxe était semblable à la mienne et cela fonctionnait donc je sais plus quoi penser xD

Reply

Marsh Posté le 17-09-2007 à 00:25:12    

oui mais non, ça marche pas comme ça : tu peux pas mettre un array comme ça dans la requête. En fait, il faut que tu crée une chaîne de caractère qui corresponde à une requête écrite dans la norme SQL.
 
Donc

Code :
  1. $res = "nom = '".$_POST['nom']."',";
  2. $res+= " ville = '".$_POST['ville']."',";
  3. //toujours avec les guillemets pour les chaines (EDIT : numériques) de caractères
  4. $res += " nombre = ".$_POST['nombre'].","; // pour les numériques ...
  5. // voilà n'oublie pas de générer les espaces et les virgules aux bons endroits


à la fin, ton $res devrait ressembler à

Code :
  1. "nom = 'machin', ville = 'truc', ... , extra = 'extra'"


Message édité par TheRom_S le 17-09-2007 à 00:31:33

---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:27:35    

je ne suis aps sur de comprendre la programmation du $res  
 
en faite je met un =+ a chaque nouvel entrée pour mon $res  
 
et apres je linclu a la place de mon $set et ce sera bon ?

Reply

Marsh Posté le 17-09-2007 à 00:30:13    

heu oui j'ai écrit $res machinalement par habitude au lieu de $set, bon ça revient au même.
$truc += $machin, c'est pareil que $truc = $truc + $machin
dans le cas d'une string, attention, c'est pas pareil que $truc = $machin + $truc (question d'ordre)
les += c'est pour faire propre


---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:31:15    

ah ok merci pour l'aide ;p

Reply

Marsh Posté le 17-09-2007 à 00:33:02    

Code :
  1. <?php
  2. $db = mysql_connect("xxx", "xxx", "xxx" );
  3. mysql_select_db("xxx", $db);
  4. $t_set =array();
  5. if (!empty($_POST['nom'])) { //test si il existe et si il est non vide
  6.    $ser  = "nom = '".mysql_real_escape_string($_POST['nom'])."'"
  7.               .",ville= '".mysql_real_escape_string($_POST['ville'])."'"
  8.               .",trick= '".mysql_real_escape_string($_POST['trick'])."'"
  9.               .",skate= '".mysql_real_escape_string($_POST['skate'])."'"
  10.               .",planche= '".mysql_real_escape_string($_POST['planche'])."'"
  11.                .",musique= '".mysql_real_escape_string($_POST['musique'])."'"
  12.                .",aime= '".mysql_real_escape_string($_POST['aime'])."'"
  13.                .",aimepas= '".mysql_real_escape_string($_POST['aimepas'])."'"
  14.                .",extra= '".mysql_real_escape_string($_POST['extra'])."'";
  15. $pres = mysql_real_escape_string($_POST['pres']);
  16. mysql_query("UPDATE dcdteam_presentation SET $set WHERE pres='$pres'" ) or die(mysql_error());
  17. }
  18. else{}
  19. ?>


 
voila ce que je ferai

Reply

Marsh Posté le 17-09-2007 à 00:34:14    

au passage l'opérateur de concaténation est . en php , pas +  
 
si tu utilise + il va transformer tes chaine de caractères en entier et les additionner :d

Reply

Marsh Posté le 17-09-2007 à 00:34:59    

euh juste une question de débutant a quoi sert mysql_real_escape_string  ?

Reply

Marsh Posté le 17-09-2007 à 00:36:24    

a eviter que quelqu'un ne te casse ta bdd
ca permet de bien gerer les personnes qu imettent des apostrophes , ainsi que des #  ou des \ , bref tous les caractères spéciaux en MySQL

Reply

Marsh Posté le 17-09-2007 à 00:39:14    

flo850 a écrit :

au passage l'opérateur de concaténation est . en php , pas +  
 
si tu utilise + il va transformer tes chaine de caractères en entier et les additionner :d


 
Ah oui tiens, mais j'étais plutôt sur du Java dernièrement alors ...


---------------
The Rom's, à votre service
Reply

Marsh Posté le 17-09-2007 à 00:44:55    

J'vous remerci maintenant sa marche ! maintenant je veillerais a ne plus marquer de connerie xD

Reply

Marsh Posté le 17-09-2007 à 00:48:00    

marquer des conneries c'est pas tres grave ( j'en ecris mon lot )  
 
mais il vaut miexu eviter d ele faire expres :d

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed