requete qui marche pô
Dernière réponse : dans Programmation
Bonjour,
j'ai une requête à priori toute simple mais qui ne veut pas fonctionner.
Je réalise une étude de marché, il y a donc beaucoup de questions (et de champ : à peu près 80).
Le formulaire se trouve sur index.php,
Sur form.php, après la connexion à la bdd, j'ai ceci (x 80) :
Puis, plus loin, j'ai écris la requête de la manière suivante :
1 - à l'exécution, j'ai le message suivant :
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 '@free.fr,test1,non,test2, je ne consomme pas de produits cu
Pourquoi est-ce que l'adresse mail n'est pas complète ?
Pourquoi est-ce $nom n'est pas affiché ? C'est peut-être normal.
Mais surtout : quelle est la signification de ce message d'erreur ? Et comment le corriger ?
Je pense qu'il s'agit d'un stupide oubli de virgule ou apostrophe, mais je le vois pas...
Donc toute aide est la bienvenue.
Tant que j'y suis, comment faire pour dans les champs de type input type="text" et textarea, je sois prémunis contre les hacks en tous genre ?
d'avance merci,
Julien
j'ai une requête à priori toute simple mais qui ne veut pas fonctionner.
Je réalise une étude de marché, il y a donc beaucoup de questions (et de champ : à peu près 80).
Le formulaire se trouve sur index.php,
action="form.php" method="post"
Sur form.php, après la connexion à la bdd, j'ai ceci (x 80) :
$nom=$_POST['nom'];
Puis, plus loin, j'ai écris la requête de la manière suivante :
$valeurs="INSERT INTO projet VALUES ('','',$nom,$email,$cult,$conso,$conso_non,...,$hab,$cp,$csp";
$ajout = mysql_query($valeurs, $connexion) or die (mysql_error());
mysql_close($connexion);
1 - à l'exécution, j'ai le message suivant :
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 '@free.fr,test1,non,test2, je ne consomme pas de produits cu
Pourquoi est-ce que l'adresse mail n'est pas complète ?
Pourquoi est-ce $nom n'est pas affiché ? C'est peut-être normal.
Mais surtout : quelle est la signification de ce message d'erreur ? Et comment le corriger ?
Je pense qu'il s'agit d'un stupide oubli de virgule ou apostrophe, mais je le vois pas...
Donc toute aide est la bienvenue.
Tant que j'y suis, comment faire pour dans les champs de type input type="text" et textarea, je sois prémunis contre les hacks en tous genre ?
d'avance merci,
Julien
Autres pages sur : requete marche
Lassé par la pub ? Créez un compte
$valeurs="INSERT INTO projet VALUES ('','', $nom, $email, $cult, $conso, $conso_non, $freq, $mag_surg, $mag_sup, $mag_surf, $mag_exo, $mag_autre, $mag_autre_score, $forme_surgele, $forme_frais, $forme_conserve, $forme_snacking, $forme_autre, $forme_autre_score, $freq_conso, $seul, $entreamis, $enfamille, $repas, $brunch, $soiree, $diner, $nimportequand, $table, $afrique, $asie, $maghreb, $orient, $caraibes, $texmex, $indienne, $pref_autre, $pref_autre_score, $origine, $origine_autre, $rare, $rare_laquelle, $frequent_laquelle, $budget, $premiere, $liban, $mezze, $sandwich, $patisserie, $plats_autre_score, $mezze_surgele, $mezze_kit, $mezze_frais, $mezze_conserve, $sandwich_surgele, $sandwich_kit, $sandwich_frais, $prix3, $prix4, $prix5, $prix6, $prix7, $prix8, $prix9, $reiterer, $jamais, $declencheur, $declencheur_autre, $restaurant, $grandesurface, $sandwicherie, $distribution, $sexe, $age, $fam, $foyer, $residence, $hab, $cp, $csp";
$ajout = mysql_query($valeurs, $connexion) or die (mysql_error());
tu oublies de mettre des ' autour de chaque variable: '$nom', '$email',...
EDIT MODO: J'ai remplacé toutes les virgules par la séquence virgule-espace. En espérant que ça garde un sens.
sancho666 a dit :
salut,ton probleme viens du fait que le caractere '@' n'es pas compris par ta base de donnée, regardes dans la doc de ta bd comment retranscrire les ceracteres speciaux!
et Hop! Bon courage!
J'avais essayé d'encadrer $_POST['email'] avec un htmlentities, mais ça ne semblait pas suffire. Une autre solution ?
Chapellois a dit :
moi je le vois mais c'est chiant de scroller pour poster !Notez que j'ai édité mon premier message pour raccourcir les VALUES, c'est dartyduck qui met le bazar
Pour retourner sur le post, j'ai modifié comme indiquer les 'apostrophes' et les la parenthèse.
J'ai constaté au passage que le nombre de champs du formulaire ne correspondait pas aux champs de la bdd : corrigé.
Malgré l'absence d'htmlentities ou autre, l'insert de l'adresse mail se déroule sans souci.
Je pourrais donc m'en passer, mais je vais quand même essayer le mysql_real_escape_string().
Cela dit, alors que le charset est en UTF-8 dans le formulaire, que l'interclassement dans PHPMyAdmin est en UTF-8-bin, les caractères accentués ne sont pas renvoyés convenablement.
Que faire ?
dartyduck, tu peux éditer ton post s'il te plait. Celui-là : http://www.presence-pc.com/forum/message.php?config=ppc...
EDIT: Bon, ben je l'ai fait moi-même
EDIT: Bon, ben je l'ai fait moi-même
Dans une requete SQL,
si tu stockes ta requete entre guillemets :
apostrophe pour les chaines de caracteres
pas apostrophe pour les entiers et réels.
si tu la stocke dans des apostrophe (quotes) :
"'.$taChaine."' pour une chaine
'.$tonNombre.' pour un entier ou un réel (un nombre quoi)
Evidemment je suppose que dans ta bdd tu as bien déclaré les type des champs comme il se doit.
si tu stockes ta requete entre guillemets :
apostrophe pour les chaines de caracteres
pas apostrophe pour les entiers et réels.
si tu la stocke dans des apostrophe (quotes) :
"'.$taChaine."' pour une chaine
'.$tonNombre.' pour un entier ou un réel (un nombre quoi)
Evidemment je suppose que dans ta bdd tu as bien déclaré les type des champs comme il se doit.
Lassé par la pub ? Créez un compte
- Contenus similaires :