Perte de mots dans $_GET[...]
Résolu
Elbomba
-
le père -
le père -
Bonjour,
Je vais essayé d'être clair!
voila : j'ai donc une variable qui fait toujours plusieurs mots qui est transmise via un lien d'une page à une autre.
Cependant, quand j'arrive à l'autre page, la variable n'est pas reconnue par mysql puisqu'un mot à disparu
exemple :
immaginons que la 'denomination' corresponde à "comment ca marche"
je suis dirigé vers la page du lien dont le code est :
message d'erreur:
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 'ca marche' at line 1
Je n'arrive pas a résoudre le probleme du premier mot qui a disparu et qui fait foiré toute ma page!
Merci!
Je vais essayé d'être clair!
voila : j'ai donc une variable qui fait toujours plusieurs mots qui est transmise via un lien d'une page à une autre.
Cependant, quand j'arrive à l'autre page, la variable n'est pas reconnue par mysql puisqu'un mot à disparu
exemple :
<a href="fiche.php?denomination= <?php echo $donnees['denomination'] ; ?> "> <?php echo $donnees['denomination']; ?> </a>
immaginons que la 'denomination' corresponde à "comment ca marche"
je suis dirigé vers la page du lien dont le code est :
$list = mysql_query('SELECT * FROM clubs WHERE Denomination=' .$_GET['denomination']) or die(mysql_error());
message d'erreur:
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 'ca marche' at line 1
Je n'arrive pas a résoudre le probleme du premier mot qui a disparu et qui fait foiré toute ma page!
Merci!
A voir également:
- Perte de mots dans $_GET[...]
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Reinstaller windows sans perte de données - Guide
- Générateur de mots - Télécharger - Sécurité
8 réponses
Bonjour
Ce n'est pas dans le GET que tu perds des mots, la preuve, ils sont dans le message d'erreur, c'est qu'ils ont bien été transmis.
Le problème, c'est ta requête : la valeur dans la clause Where doit être entourée de guillemets (simples ou doubles). De plus, pour le cas où cette valeur contient des caractères spéciaux, il faut l'échapper avec mysql_real_escape_string , ça t'évitera quelques mauvaises surprises :
Ce n'est pas dans le GET que tu perds des mots, la preuve, ils sont dans le message d'erreur, c'est qu'ils ont bien été transmis.
Le problème, c'est ta requête : la valeur dans la clause Where doit être entourée de guillemets (simples ou doubles). De plus, pour le cas où cette valeur contient des caractères spéciaux, il faut l'échapper avec mysql_real_escape_string , ça t'évitera quelques mauvaises surprises :
$list = mysql_query('SELECT * FROM clubs WHERE Denomination="' .mysql_real_escape_string($_GET['denomination'])."'") or die(mysql_error());
<a href="fiche.php?denomination= <?php echo url_encode($donnees['denomination']) ; ?> "> <?php echo $donnees['denomination']; ?> </a>
et attention avant de passer ça dans mysql il vaut mieux se protéger d'attaques:
$denomination=mysql_escape_string($_GET['denomination']); $list = mysql_query("SELECT * FROM clubs WHERE Denomination='" .$denomination."' ") or die(mysql_error());
Salut!
Tout d'abord merci pour votre aide rapide!
Cependant, ça ne fonctionne toujours pas
lorque j'utilise le code de le pere, j'ai tout les mots mais je pense qu'il y a une apostrophe ou un guillemet en trop :
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 '" comment ca marche'' at line 1
je ne parvient donc pas obtenir la donnée dans ma base de donnée.
Merci pour le conseil Alain_42, je m'attellerais à ça plus tard!
Tout d'abord merci pour votre aide rapide!
Cependant, ça ne fonctionne toujours pas
lorque j'utilise le code de le pere, j'ai tout les mots mais je pense qu'il y a une apostrophe ou un guillemet en trop :
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 '" comment ca marche'' at line 1
je ne parvient donc pas obtenir la donnée dans ma base de donnée.
Merci pour le conseil Alain_42, je m'attellerais à ça plus tard!
$list = mysql_query('SELECT * FROM clubs WHERE Denomination=' .$_GET[ 'denomination']) or die(mysql_error());
en gras t'a mis un espace avant la premiere cote ce qui est sans doute source d'erreure
en gras t'a mis un espace avant la premiere cote ce qui est sans doute source d'erreure
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$list = mysql_query('SELECT * FROM clubs WHERE Denomination="' .mysql_real_escape_string($_GET['denomination']).'"") or die(mysql_error());
petite erreur de guillemets après $_GET['denomination']
Souvent quand on passe des variables en Get, Les espaces sont remplacés par des %20 ou un truc comme ça. En SQL le signe % à une signification bien particulière. Je pense que ton erreur vient de là.
Essaye en envoyant une variable sans espace, je pense que ça marchera et ça confirmera ma supposition.
Essaye en envoyant une variable sans espace, je pense que ça marchera et ça confirmera ma supposition.
Merci!
Il y avait bien une erreur de guillemet :
Il y avait aussi un espace en trop dans le lien d'origine
<a href="fiche.php?denomination= <?php echo $donnees['denomination'] ; ?> "> <?php echo $donnees['denomination']; ?> </a>
si ça peut aider qqun...
Merci encore bonne journée!!
Il y avait bien une erreur de guillemet :
$list = mysql_query('SELECT * FROM clubs WHERE Denomination=" ' .mysql_real_escape_string($_GET['denomination']).' " ') or die(mysql_error());
Il y avait aussi un espace en trop dans le lien d'origine
<a href="fiche.php?denomination= <?php echo $donnees['denomination'] ; ?> "> <?php echo $donnees['denomination']; ?> </a>
si ça peut aider qqun...
Merci encore bonne journée!!