Requète SQL - erreur syntaxe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requète SQL - erreur syntaxe

Re: Requète SQL - erreur syntaxe

par AB » 19 avr. 2010, 02:49

Faut pas mettre de || dans la requête.

Définis une variable par exemple
$sexe = isset($_POST['masculin'])?  'M'  : 'indéfini';
$sexe = isset($_POST['feminin'])?  'F'  : $sexe;
ensuite c'est cette variable que tu insère dans la requête à la place de ($_POST['masculin'] || $_POST['feminin'])

Au passage les variables que l'on insère dans une requête doivent être protégées par la fonction mysql_real_escape_string

Et puis si tu débutes mieux vaut prendre l'habitude d'utiliser mysqli pour les requêtes en procédural. Il y a vraiment peu de différence avec la syntaxe mysql et c'est recommandé par le manuel.

Re: Requète SQL - erreur syntaxe

par devlop78 » 18 avr. 2010, 17:46

Il manque un point ici (au niveau du smiley)

$query ="insert into adherent (nom, prenom, sexe, datenaiss, adresse, cp, ville, dateadhesion, dateecheance) values (".$_POST['nom'].",".$_POST['prenom']."," :oops: ($_POST['masculin'] || $_POST['feminin']).$_POST['datenaiss'].",".$_POST['adresse'].",".$_POST['cp'].",".$_POST['ville'].",".$_POST['inscript'].",".$_POST['echeance'].",now())";

Re: Requète SQL - erreur syntaxe

par Aureusms » 18 avr. 2010, 12:26

C'est quoi la structure de ta table?

Re: Requète SQL - erreur syntaxe

par Egs1989 » 18 avr. 2010, 11:36

Re, j'ai réussi à corriger mon problème de now, maintenant le dernier vient de mon bidouillage avec le masculin et féminin car j'ai ça :

Erreur : 1136
Message : Column count doesn't match value count at row 1

Il croit qu'il me manque une valeur et je suis sur que ça vient de mon " || " . Quelqun aurait une idée pour que j'insère ces champs ? :^o

Re: Requète SQL - erreur syntaxe

par Egs1989 » 18 avr. 2010, 10:56

C'est bon j'ai trouvé pour mes undefined index :D . Me manque que l'histoire du now, j'ai ça comme erreur depuis que j'ai corrigé les undefined index :

Erreur : 1064
Message : Erreur de syntaxe près de '10:53:47 ,,now())' à la ligne 2
L'opération a échoué

Re: Requète SQL - erreur syntaxe

par Egs1989 » 18 avr. 2010, 10:40

Merci beaucoup pour vos réponses =) j'avances. Donc j'ai trouvé mes erreurs de points et j'ai enfin quelque chose de plus :

Notice: Undefined index: inscript in C:\Program Files (x86)\EasyPHP 3.0\www\Ludotheque\ajoutadherentsql.php on line 33

Notice: Undefined index: echeance in C:\Program Files (x86)\EasyPHP 3.0\www\Ludotheque\ajoutadherentsql.php on line 33

Erreur : 1064
Message : Erreur de syntaxe près de ', now())' à la ligne 2
L'opération a échoué

Donc : Pour les undefined index je penses que ça doit être un $_post mal déclaré je pourrais me débrouiller , parc contre "Erreur de syntaxe près de ', now())' à la ligne 2", je ne comprend pas du tout ce type d'erreur car avec une autre requête j'ai écrit le now de la même façon et ça marche. :^o

Re: Requète SQL - erreur syntaxe

par Aureusms » 18 avr. 2010, 09:40

Moi pour tester plein de valeurs envoyée par POST j'emploie cette méthode :
Je mets un mots clef (ou une lettre clef genre * dans la clef du post) et je teste les variables grâce à une fonction.
Sans le mot clef, cela qui donnerai dans ton cas :
<?php
function test_post ($tab_a_tester)
{
	foreach ($tab_a_tester as $cle_POST)
	{
		if (!isset($_POST[$cle_POST]) or empty ($_POST[$cle_POST]))
			return FALSE;
	
	}
}

$tab_post_a_tester = array ("nom", "prenom", "masculin", "feminin", "datenaiss", "adresse", "cp", "ville");
if(!test_post($tab_post_a_tester))
{
	echo ("Veuillez saisir toutes les valeurs!");
}
else
{ 
?>

Re: Requète SQL - erreur syntaxe

par Calimero » 18 avr. 2010, 05:00

J'ai voulais essayer quelque chose :?
Ca se sent, car c'est justement là que se situe ton problème ;) Regarde attentivement autour de cet essai pour trouver ton souci :)

:arrow: Il manque un point avant "l'essai", et il manque au moins une virgule après (même si tu surmontes la parse error PHP, la requête n'est pas bien formée comme l'a vu AB).

Quand tu auras rajouté ce fameux point (et donc réglé la Parse Error), tu pourras faire un echo de la variable $query, et en copier le résultat ici (encadré par des balises SQL) pour "voir" le second problème dans cette requête.

Re: Requète SQL - erreur syntaxe

par Egs1989 » 17 avr. 2010, 20:42

En fait pour le sexe, c'est féminin ou masculin j'ai deux bouton radio de choix. Donc pour ma requète l'enregistrement sexe prend F ou M . Donc je me suis dit c'est masculin "ou" féminin :^o . J'ai voulais essayer quelque chose :?

Re: Requète SQL - erreur syntaxe

par AB » 17 avr. 2010, 20:26

faits un echo $query pour vérifier ce que renvoi la chaine de ta requête avec les variables.
Comme l'a dit Calimero ta requête n'est pas bien écrite.
Et puis c'est quoi ce || dans la requête d'insertion ?

Re: Requète SQL - erreur syntaxe

par Egs1989 » 17 avr. 2010, 18:46

Re,
Hum... je cherches depuis tout à l'heure et ne n'avances pas trop. Quelqu'un en saurait un peu plus sur le problème ??

Re: Requète SQL - erreur syntaxe

par Egs1989 » 17 avr. 2010, 17:54

Ok je vais essayer de voir ce que je peux faire, sinon voila mon message d'erreur :

Parse error: parse error in C:\Program Files (x86)\EasyPHP 3.0\www\Ludotheque\ajoutadherentsql.php on line 32

Re: Requète SQL - erreur syntaxe

par Calimero » 17 avr. 2010, 17:33

Bonjour,

Trois idées :

- Ecris des lignes moins longues, quitte à éclater un long if() en plusieurs. Les messages d'erreur seront alors plus ciblés et les erreurs plus faciles à trouver.
- Tu peux te passer des parenthèses autour des valeurs transmises dans un echo, elles sont optionnelles et tu en as déjà largement assez ailleurs ;)
- Ton problème est simplement un point qui manque dans l'assemblage de certains éléments de la requête. (pense à nous copier le message d'erreur exact la prochaine fois stp).

Requète SQL - erreur syntaxe

par Egs1989 » 17 avr. 2010, 17:25

Bonjour à tous,

Je débutes en php, j'ai fait une requête pour enregistrer un nouvel adhérent dans ma base mais j'ai une erreur de syntaxe et le problème c'est que le message n'est pas précis : on m'indique une erreur à la ligne 32 , ici ça correspond au contenu du premier else
if(empty($_POST['nom']) || empty($_POST['prenom']) || (empty($_POST['masculin']) && empty($_POST['feminin'])) || empty($_POST['datenaiss']) || empty($_POST['adresse']) || empty($_POST['cp']) ||  empty($_POST['ville']))
	{
		echo ("Veuillez saisir toutes les valeurs!");
	}
	else
	{  

$query ="insert into adherent (nom, prenom, sexe, datenaiss, adresse, cp, ville, dateadhesion, dateecheance) values (".$_POST['nom'].",".$_POST['prenom'].","($_POST['masculin'] || $_POST['feminin']).$_POST['datenaiss'].",".$_POST['adresse'].",".$_POST['cp'].",".$_POST['ville'].",".$_POST['inscript'].",".$_POST['echeance'].",now())";

		$result =mysql_query($query);
	
		if ($result==FALSE)
		{
			echo ("<p>Erreur : ".mysql_errno($connect)."<br />");
			echo ("Message : ".mysql_error($connect)."</p>");
		die("L'opération a échoué");
		}	
		else
		{
			echo ("La requète a réussi, l'adherent a été enregistrer");
		}		
	}

Voila :D Si vous avez une idée, elle est la bien venue