A voir également:
- Syntaxe requete sql mysql_escape_string
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Syntaxe precise - Forum Mail
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Logiciel sql - Télécharger - Bases de données
- Sql server recovery - Télécharger - Gestion de données
5 réponses
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
7 nov. 2012 à 16:41
7 nov. 2012 à 16:41
bonjour,
il manque un ; a la fin de la requetes
il manque un ; a la fin de la requetes
Utilisateur anonyme
7 nov. 2012 à 17:00
7 nov. 2012 à 17:00
Bonjour
Il te manque effectivement un ; à la fin de la requête, mais ce n'est pas tout.
Il vaut mieux utiliser mysql_real_escape_string que mysql_escape_string
Le second paramètre de hash devrait être simplement $monmdp, pas "' .$monmdp. '".
La fonction mysql_escape_string est absolument inutile sur le résultat de hash : comme hash (sans 3ème paramètre) ne rend que des caractères alphanumériques hexadécimaux, il n'y a absolument aucun risque d'injection de quoi que ce soit. Par contre, cette fonction serait utile sur $loginemail, qui vient sans doute d'un formulaire et qui peut donc contenir n'importe quoi.
Il te manque effectivement un ; à la fin de la requête, mais ce n'est pas tout.
Il vaut mieux utiliser mysql_real_escape_string que mysql_escape_string
Le second paramètre de hash devrait être simplement $monmdp, pas "' .$monmdp. '".
La fonction mysql_escape_string est absolument inutile sur le résultat de hash : comme hash (sans 3ème paramètre) ne rend que des caractères alphanumériques hexadécimaux, il n'y a absolument aucun risque d'injection de quoi que ce soit. Par contre, cette fonction serait utile sur $loginemail, qui vient sans doute d'un formulaire et qui peut donc contenir n'importe quoi.
$requete = 'UPDATE utilisateur SET pass = "'.hash("sha256",$monmdp).'" WHERE login="'.mysql_real_escape_string($loginemail).'"'; mysql_query($requete) or die ('erreur sql !'.$requete.'<br />'.mysql_error());
Encore un probleme de syntaxe.
Si j'ajoute des mysql_real_escape_string dans l'une de mes requetes, ma syntaxe est incorrecte et j'obtiens évidement un message d'erreur.
Ma difficulté vient de STR_TO_DATE qui est mal formulé.
Par ailleurs, faut il protéger aussi STR_TO_DATE avec un mysql_real_escape_string?
Si j'ajoute des mysql_real_escape_string dans l'une de mes requetes, ma syntaxe est incorrecte et j'obtiens évidement un message d'erreur.
Ma difficulté vient de STR_TO_DATE qui est mal formulé.
$requete = 'INSERT INTO trajets (idclient, datetrajet, heuretrajet, adressedepart,nomdestinataire,idtype,adressearrive,distancetrajet) VALUES ( idutilisateur="'.mysql_escape_string($donnees['idutilisateur']).'", datetrajet="'.STR_TO_DATE('$datetrajet', '%d/%m/%Y').'", heuretrajet="'.mysql_real_escape_string($_POST['heuretrajet']).'", )';
Par ailleurs, faut il protéger aussi STR_TO_DATE avec un mysql_real_escape_string?
Utilisateur anonyme
8 nov. 2012 à 15:08
8 nov. 2012 à 15:08
Avec ou sans mysql_real_escape_string, cette requête n'a pas de sens.
Normalement, une requête INSERT c'est
INSERT INTO table (liste de champs) VALUES(liste de valeurs)
avec autant de valeurs que de champs.
Mais toi, dans ta liste de valeurs, tu mets en fait une liste de champ=valeur.
Autre point : si tu mets $datetrajet entre apostrophes '$datetrajet', ce n'est plus une variable mais un simple texte (alors qu'entre doubles quotes"$datetrajet" ou sans quotes du tout, cela représente bien le contenu de la variable)
Enfin, STR_TO_DATE est une fonction MYSQL, pas une fonction PHP. Elle doit donc être à l'intérieur de la requête, or toi tu l'as écrite comme une fonction PHP. Il ne faut pas protéger STR_TO_DATE, ce qui n'a pas de sens puisqu'elle n'est pas évaluée par PHP, par contre il faut bien échapper le $datetrajet que tu lui passes
Plus divers petits problèmes de mélange de ' et de ", plus une virgule en trop à la fin...
Si tu ne veux remplir que 3 champs, ce qui suppose que les autres ont des valeurs par défaut :
Normalement, une requête INSERT c'est
INSERT INTO table (liste de champs) VALUES(liste de valeurs)
avec autant de valeurs que de champs.
Mais toi, dans ta liste de valeurs, tu mets en fait une liste de champ=valeur.
Autre point : si tu mets $datetrajet entre apostrophes '$datetrajet', ce n'est plus une variable mais un simple texte (alors qu'entre doubles quotes"$datetrajet" ou sans quotes du tout, cela représente bien le contenu de la variable)
Enfin, STR_TO_DATE est une fonction MYSQL, pas une fonction PHP. Elle doit donc être à l'intérieur de la requête, or toi tu l'as écrite comme une fonction PHP. Il ne faut pas protéger STR_TO_DATE, ce qui n'a pas de sens puisqu'elle n'est pas évaluée par PHP, par contre il faut bien échapper le $datetrajet que tu lui passes
Plus divers petits problèmes de mélange de ' et de ", plus une virgule en trop à la fin...
Si tu ne veux remplir que 3 champs, ce qui suppose que les autres ont des valeurs par défaut :
$requete = 'INSERT INTO trajets (idutilisateur,datetrajet,heuretrajet) VALUES ( "'.mysql_real_escape_string($donnees['idutilisateur']).'", STR_TO_DATE("'.mysql_real_escape_string($datetrajet).'", "%d/%m/%Y") , "'.mysql_real_escape_string($_POST['heuretrajet']).'" )';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question