Syntaxe UPDATE dans MySql ?

Résolu
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je bute sur un message d'erreur MySql depuis pas mal de temps :

parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\campingcar\tab3\fichecc_modif_valid.php on line 121

Voici un extrait du script :

if ($action == "submit") {
$sql = "UPDATE f_sites_annuaire SET photo='$enreg["photo1"]',photo1='$enreg["photo1"]',planjour='$enreg["planjour"]',planjour1='$enreg["planjour1"]',plannuit='$enreg["plannuit"]',plannuit1='$enreg["plannuit1"]',marque='$enreg["marque"]',ref='$enreg["ref"]',type='$enreg["type"]',annee='$enreg["annee"]',porteur='$enreg["porteur"]',carosserie='$enreg["carosserie"]',longueur='$enreg["longueur"]',largeur='$enreg["largeur"]',hauteurext='$enreg["hauteurext"]',hauteurint='$enreg["hauteurint"]',ptac='$enreg["ptac"]',cu='$enreg["cu"]',pome='$enreg["pome"]',pr='$enreg["pr"]',puissance='$enreg["puissance"]',empattement='$enreg["empattement"]',placescg='$enreg["placescg"]',placesnuit='$enreg["placesnuit"]',placesrepas='$enreg["placesrepas"]',sejour='$enreg["sejour"]',cuisine='$enreg["cuisine"]',eaupropre='$enreg["eaupropre"]',eauusee='$enreg["eauusee"]',gaz='$enreg["gaz"]',batterie='$enreg["batterie"]',refrigerateur='$enreg["refrigerateur"]',couchages='$enreg["couchages"]',toilette='$enreg["toilette"]',chauffage='$enreg["chauffage"]',soutegarage='$enreg["soutegarage"]',prixeuros='$enreg["prixeuros"]',origineinfo='$enreg["origineinfo"]',origineemail='$enreg["origineemail"]',datesaisie='$enreg["datesaisie"]',datemodif='$enreg["datemodif"]',date_validation=CURRENT_DATE WHERE id='$enreg["id"]'";
echo $sql . "<br>"; // Piege Type
$upd = send_sql($sql,"modifier les infos du commentaire"); // envoi de la requête dans une fonction

L'erreur est sur la ligne $sql.
Je débute est j'ai vérifié avec des "echo" pour afficher toutes les variables, sans probléme.

Le tableau 'enreg' arrive dans le script comme ceci :

$enreg = isset($_SESSION['enreg']) ? $_SESSION['enreg'] : '';

Merci de m'aider.
Cordialement.
A voir également:

4 réponses

le père
 
Bonjour

pour avoir plus de précisions sur l'endroit où tu as un problème, découpe ton $sql= en plusieurs morceaux :

$sql = "UPDATE f_sites_annuaire SET photo='$enreg["photo1"]',"
$sql .= "photo1='$enreg["photo1"]',planjour='$enreg[&q uot;planjour"]',"
$sql .= "planjour1='$enreg["planjour1"]',plannuit='$enreg["plan nuit"]',"

etc... (sql.=, remarque le . permet d'ajouter à la fin de $sql)

si tu lis attentivement ta requête, tu remarqueras qu'il y a beaucoup de caractères espace en trop (l ongueur=, $ enreg["hauteurext"]...)

En plus de ça, tu cours à des ennuis si l'un des champs (saisi par un visiteur, je suppose) contient un apostrophe.
par exemple :

$sql = "UPDATE table set machin='$truc'" devient
"UPDATE table set machin='je t'ai eu'"

mysql verra machin = 'je t' et ne saura pas quoi faire du 'ai eu'
les pirates se servent beaucoup de ce truc (en mettant ce qui va bien à la place de ai eu)

pour éviter ça, quand tu insères quelque chose dans une base de données, utilise TOUJOURS machin='".mysql_real_escape_string($truc)."'...Oui je sais c'est long à écrire mais ça t'évitera des ennuis
0
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci pour ta péponse.

J'ai mis en pratique le découpage de la requête avec vérification des espaces inutlies et j'ai le même message.

J'ai raccourci la requête à son mini en remplaçant la variable par une valeur et l'update s'est bien effectué correctement :
$sql = "UPDATE f_sites_annuaire SET marque='LMC' WHERE id='3'";

J'ai remplacé la valeur de la clause WHERE par la variable en laissant la valeur du champ 'marque' est de nouveau le même message d'erreur : parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
$sql = "UPDATE f_sites_annuaire SET marque='LMC' WHERE id='$enreg["id"]'";

J'ai inversé
$sql = "UPDATE f_sites_annuaire SET marque='$enreg["marque"]' WHERE id='3'";
Et même message : parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Pour ce qui est des problèmes de saisie, j'utilise :
if (!get_magic_quotes_gpc()) { // on rajoute des slash pour les magic_quote en OFF
$porteur = addslashes($porteur);
// on enleve les caracteres speciaux et les balises html
$porteur = $porteur;
et a l'affichage : htmlspecialchars

Cordialement
0
Alain42
 
Bonjour,

Je vois une erreur:

$sql = "UPDATE f_sites_annuaire SET photo='$enreg["photo1"]',photo1='$enreg["photo1"]......

ta chaine commence et finit par "

alors tous les " à l'intérieur de ta chaine doivent être échappés par \

$sql = "UPDATE f_sites_annuaire SET photo='$enreg[\"photo\"]',photo1='$enreg[\"photo1\"]',......."


ou pour appliquer ce que te dis "le pere" dans le post au dessus:

tu récupéres les valeurs postées par le formulaire

$photo=mysql_real_escape_string($_POST['photo']);
$photo1=mysql_real_escape_string($_POST['photo1']);

etc..

et la requette devient

$sql = "UPDATE f_sites_annuaire SET photo='$photo',photo1='$photo1', ........"
0
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci pour ta réponse.

J'ai commencé à modifier la requête, ce qui donne, mais toujours le même message : "parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\campingcar\tab3\fichecc_modif_valid.php on line 122


$sql = "UPDATE f_sites_annuaire SET photo='$enreg[\"photo1\"]',photo1='$enreg[\"photo1\"]',planjour='$enreg[\"planjour\"]',planjour1='$enreg[\"planjour1\"]',"
$sql .= "plannuit='$enreg[\"plannuit\"]',plannuit1='$enreg[\"plannuit1\"]',marque='$enreg[\"marque\"]',ref='$enreg[\"ref\"]',type='$enreg[\"type\"]',annee='$enreg[\"annee\"]',"
$sql .= "porteur='$enreg[\"porteur\"]',carosserie='$enreg[\"carosserie\"]',longueur='$enreg[\"longueur\"]',largeur='$enreg[\"largeur\"]',hauteurext='$enreg[\"hauteurext\"]',"
$sql .= "hauteurint='$enreg[\"hauteurint\"]',ptac='$enreg[\"ptac\"]',cu='$enreg[\"cu\"]',pome='$enreg[\"pome\"]',pr='$enreg[\"pr\"]',puissance='$enreg[\"puissance\"]',"
$sql .= "empattement='$enreg[\"empattement\"]',placescg='$enreg[\"placescg\"]',placesnuit='$enreg[\"placesnuit\"]',placesrepas='$enreg[\"placesrepas\"]',sejour='$enreg[\"sejour\"]',"
$sql .= "cuisine='$enreg[\"cuisine\"]',eaupropre='$enreg[\"eaupropre\"]',eauusee='$enreg[\"eauusee\"]',gaz='$enreg[\"gaz\"]',batterie='$enreg[\"batterie\"]',"
$sql .= "refrigerateur='$enreg[\"refrigerateur\"]',couchages='$enreg[\"couchages\"]',toilette='$enreg[\"toilette\"]',chauffage='$enreg[\"chauffage\"]',"
$sql .= "soutegarage='$enreg[\"soutegarage\"]',prixeuros='$enreg[\"prixeuros\"]',origineinfo='$enreg[\"origineinfo\"]',origineemail='$enreg[\"origineemail\"]',"
$sql .= "datesaisie='$enreg[\"datesaisie\"]',datemodif='$enreg[\"datemodif\"]',date_validation=CURRENT_DATE WHERE id='$enreg[\"id\"]'";
echo $sql . "<br>"; // Piege Type
$upd = send_sql($sql,"modifier les infos du commentaire"); // envoi de la requête

Je vais voir pour l'autre méthode.

Cordialement.
0
Alain42
 
Salut,

Est ce normal que tu ait photo='$enreg[\"photo1\"] et photo1='$enreg[\"photo1\"]?


ensuite tu as des & quot; qui trainent un peu partout dans ta requette
0
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   22
 
Salut,

Non ce n'est pas normal et les & qotes ne se trouvent qu'ici, je ne les ai pas dans Dreamweaver.
Voici la requête:
$sql = "UPDATE f_sites_annuaire SET photo='$enreg[\"photo\"]',photo1='$enreg[\"photo1\"]',planjour='$enreg[\"planjour\"]',planjour1='$enreg[\"planjour1\"]',"
$sql .= "plannuit='$enreg[\"plannuit\"]',plannuit1='$enreg[\"plannuit1\"]',marque='$enreg[\"marque\"]',ref='$enreg[\"ref\"]',type='$enreg[\"type\"]',annee='$enreg[\"annee\"]',"
$sql .= "porteur='$enreg[\"porteur\"]',carosserie='$enreg[\"carosserie\"]',longueur='$enreg[\"longueur\"]',largeur='$enreg[\"largeur\"]',hauteurext='$enreg[\"hauteurext\"]',"
$sql .= "hauteurint='$enreg[\"hauteurint\"]',ptac='$enreg[\"ptac\"]',cu='$enreg[\"cu\"]',pome='$enreg[\"pome\"]',pr='$enreg[\"pr\"]',puissance='$enreg[\"puissance\"]',"
$sql .= "empattement='$enreg[\"empattement\"]',placescg='$enreg[\"placescg\"]',placesnuit='$enreg[\"placesnuit\"]',placesrepas='$enreg[\"placesrepas\"]',sejour='$enreg[\"sejour\"]',"
$sql .= "cuisine='$enreg[\"cuisine\"]',eaupropre='$enreg[\"eaupropre\"]',eauusee='$enreg[\"eauusee\"]',gaz='$enreg[\"gaz\"]',batterie='$enreg[\"batterie\"]',"
$sql .= "refrigerateur='$enreg[\"refrigerateur\"]',couchages='$enreg[\"couchages\"]',toilette='$enreg[\"toilette\"]',chauffage='$enreg[\"chauffage\"]',"
$sql .= "soutegarage='$enreg[\"soutegarage\"]',prixeuros='$enreg[\"prixeuros\"]',origineinfo='$enreg[\"origineinfo\"]',origineemail='$enreg[\"origineemail\"]',"
$sql .= "datesaisie='$enreg[\"datesaisie\"]',datemodif='$enreg[\"datemodif\"]',date_validation=CURRENT_DATE WHERE id='$enreg[\"id\"]'";
Avec toujours le même message d'erreur.

Sur le forum "Developpez.com", j'ai eu une proposition de syntaxe différente qui a donné un message d'erreur plus simple : "Parse error on line......":
$sql = "UPDATE f_sites_annuaire SET photo='".enreg["photo"]."',photo1='".enreg["photo1"]."',planjour='".enreg["planjour"]."',planjour1='".enreg["planjour1"]."',"
$sql .= "plannuit='".enreg["plannuit"]."',plannuit1='".enreg["plannuit1"]."',marque='".enreg["marque"]."',ref='".enreg["ref"]."',type='".enreg["type"]."',annee='".enreg["annee"]."',"
$sql .= "porteur='".enreg["porteur"]."',carosserie='".enreg["carosserie"]."',longueur='".enreg["longueur"]."',largeur='".enreg["largeur"]."',hauteurext='".enreg["hauteurext"]."',"
$sql .= "hauteurint='".enreg["hauteurint"]."',ptac='".enreg["ptac"]."',cu='".enreg["cu"]."',pome='".enreg["pome"]."',pr='".enreg["pr"]."',puissance='".enreg["puissance"]."',"
$sql .= "empattement='".enreg["empattement"]."',placescg='".enreg["placescg"]."',placesnuit='".enreg["placesnuit"]."',placesrepas='".enreg["placesrepas"]."',sejour='".enreg["sejour"]."',"
$sql .= "cuisine='".enreg["cuisine"]."',eaupropre='".enreg["eaupropre"]."',eauusee='".enreg["eauusee"]."',gaz='".enreg["gaz"]."',batterie='".enreg["batterie"]."',"
$sql .= "refrigerateur='".enreg["refrigerateur"]."',couchages='".enreg["couchages"]."',toilette='".enreg["toilette"]."',chauffage='".enreg["chauffage"]."',"
$sql .= "soutegarage='".enreg["soutegarage"]."',prixeuros='".enreg["prixeuros"]."',origineinfo='".enreg["origineinfo"]."',origineemail='".enreg["origineemail"]."',"
$sql .= "datesaisie='".enreg["datesaisie"]."',datemodif='".enreg["datemodif"]."',date_validation=CURRENT_DATE WHERE id='".enreg["id"]."'";

Cordialement.
0
jlbrenas Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   22
 
Salut,

Encore grand merci à ceux qui ont pris de leur temps pour m'aider.

La dernière syntaxe de requête de mon dernier message comportait plusieurs oublis :
$ devant enreg
; en fin de ligne

Avec ces corrections la requête fonctionne (Ne pas tenir compte des "&q ote" car ceci apparaissent seulement sur le forum) :

$sql = "UPDATE f_sites_annuaire SET photo='".$enreg["photo"]."',photo1='".$enreg["photo1"]."',planjour='".$enreg["planjour"]."',planjour1='".$enreg["planjour1"]."',";
$sql .= "plannuit='".$enreg["plannuit"]."',plannuit1='".$enreg["plannuit1"]."',marque='".$enreg["marque"]."',ref='".$enreg["ref"]."',type='".$enreg["type"]."',annee='".$enreg["annee"]."',";
$sql .= "porteur='".$enreg["porteur"]."',carosserie='".$enreg["carosserie"]."',longueur='".$enreg["longueur"]."',largeur='".$enreg["largeur"]."',hauteurext='".$enreg["hauteurext"]."',";
$sql .= "hauteurint='".$enreg["hauteurint"]."',ptac='".$enreg["ptac"]."',cu='".$enreg["cu"]."',pome='".$enreg["pome"]."',pr='".$enreg["pr"]."',puissance='".$enreg["puissance"]."',";
$sql .= "empattement='".$enreg["empattement"]."',placescg='".$enreg["placescg"]."',placesnuit='".$enreg["placesnuit"]."',placesrepas='".$enreg["placesrepas"]."',sejour='".$enreg["sejour"]."',";
$sql .= "cuisine='".$enreg["cuisine"]."',eaupropre='".$enreg["eaupropre"]."',eauusee='".$enreg["eauusee"]."',gaz='".$enreg["gaz"]."',batterie='".$enreg["batterie"]."',";
$sql .= "refrigerateur='".$enreg["refrigerateur"]."',couchages='".$enreg["couchages"]."',toilette='".$enreg["toilette"]."',chauffage='".$enreg["chauffage"]."',";
$sql .= "soutegarage='".$enreg["soutegarage"]."',prixeuros='".$enreg["prixeuros"]."',origineinfo='".$enreg["origineinfo"]."',origineemail='".$enreg["origineemail"]."',";
$sql .= "datesaisie='".$enreg["datesaisie"]."',datemodif='".$enreg["datemodif"]."',date_validation=CURRENT_DATE WHERE id='".$enreg["id"]."'";
0