Syntaxe UPDATE dans MySql ?

Résolu/Fermé
jlbrenas Messages postés 18 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 - 25 nov. 2007 à 09:48
jlbrenas Messages postés 18 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 - 25 nov. 2007 à 15:17
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

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 vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 22
25 nov. 2007 à 11:56
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
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 vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 22
25 nov. 2007 à 12:07
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
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 vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 22
25 nov. 2007 à 14:44
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 vendredi 11 juin 2004 Statut Membre Dernière intervention 9 août 2022 22
25 nov. 2007 à 15:17
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