SQL Server : dé-spécialiser guillemets ?

SQL Server : dé-spécialiser guillemets ? - SQL/NoSQL - Programmation

Marsh Posté le 29-05-2008 à 12:00:41    

Bonjour,
 
Je fais un formulaire, dont les champs récupérés serviront à faire des requête sur une BD SQL Server 05.  
Or, lorsque l'utilisateur rentre par exemple un champ avec un apostrophe au milieu, cela fausse la requête.
 
Exemple :  
Nom ==> D'Agostinho  
Prénom ==> Pierre
 
La requête qui en résulte est  
 

Code :
  1. INSERT INTO TABLE VALUES('D'Agostinho', 'Pierre');


 
Comment faire pour éviter ce désagrément ?  
Merci.

Reply

Marsh Posté le 29-05-2008 à 12:00:41   

Reply

Marsh Posté le 29-05-2008 à 12:10:58    

Apprendre à coder, et dans ce cas précis à utiliser des requêtes préparées?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-05-2008 à 12:18:21    

Peux-tu m'en dire plus sur les requêtes préparées ?  
J'voulais savoir si le code se fait du côté de SQL Server ou uniquement du côté du formulaire ?

Reply

Marsh Posté le 29-05-2008 à 12:46:55    

Sbartacus a écrit :

Peux-tu m'en dire plus sur les requêtes préparées ?


Non, google est là pour ça


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-05-2008 à 12:54:22    

Mauvaise journée ou mauvais réveil on dirait...
Pas grave, merci quand même.

Reply

Marsh Posté le 03-10-2008 à 10:04:30    

Salut,
 
j'ai exactement le meme probleem. T'as reussit a le resoudre entre temps? :)
 
A+


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 11:19:01    

au niveau de ton formulaire, tu dois TOUJOURS valider que tes données soient saines
 
dans ce cas précis tu dois remplacer les ' par \' , il existe généralement des fonctions prévues pour adns les langages
Mieux, tu peux utiliser des requetes preparées ( prepared statment )


---------------

Reply

Marsh Posté le 03-10-2008 à 11:20:03    

Arf, dans mon cas c'est un SQL et je tape direct dans la base de donnée. mais entre temps, j'ai trouvé, faut mettre ca: '' (deux fois ' )


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 13:31:09    

Ill Nino a écrit :

Arf, dans mon cas c'est un SQL et je tape direct dans la base de donnée. mais entre temps, j'ai trouvé, faut mettre ca: '' (deux fois ' )


 [:prozac]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 13:33:47    


T'as l'air vachement malin comme gars toi! En tous cas sur ce topic tu rayonnes de connerie...  :o


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 13:33:47   

Reply

Marsh Posté le 03-10-2008 à 14:08:04    

Ill Nino a écrit :


T'as l'air vachement malin comme gars toi! En tous cas sur ce topic tu rayonnes de connerie...  :o


En l'occurence je te réfère à ma première réponse qui donne l'unique méthode correcte, plutôt que ton espèce d'immonde soupe dégueulasse à base de fail.

Message cité 1 fois
Message édité par masklinn le 03-10-2008 à 14:08:30

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 14:23:38    

masklinn a écrit :


En l'occurence je te réfère à ma première réponse qui donne l'unique méthode correcte, plutôt que ton espèce d'immonde soupe dégueulasse à base de fail.


(oui enfin en sql brut les requêtes préparées hein...[:petrus75])

 

[edit]

 

Ah tiens j'avais pas vu que ça causait de formulaire au début.[:joce]

Message cité 1 fois
Message édité par skeye le 03-10-2008 à 14:24:10

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:24:13    

Ill Nino a écrit :


T'as l'air vachement malin comme gars toi! En tous cas sur ce topic tu rayonnes de connerie...  :o


 
c'est pas que je l'apprécie bcp , mais je penses que le nombre de personnes qui peuvent le traiter d'incompetent sur ce forum est tres restreint
 
tu peux detailelr un peu comemnt tu travaille, parceque , de memoire, quand tu travaille uniquement dans les abses de donénes ( sans langage php/asp/vb/... ) les accents ne posent pas de problème


---------------

Reply

Marsh Posté le 03-10-2008 à 14:30:12    

J'le traitais pas d'incompétent, j'trouve juste ca nul de venir prendre les gens de haut. C'est un forum pour experts en dev ici? :o
 
Et comme dit c'est un SQL en direct dans la BDD que je faisais...
 
Mon problème était avec des LIKE et les pseudos regex qui commencent et finissent par le fameux ' . Rechercher ce ' dans la regex la coupait en deux.
 
J'ai p'etre mal vu sinon, mais j'trouve ca dommage que SQL Server ne permette pas l'utilisation de vraie regex d'ailleurs... Ca serait bien pratique...


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 14:32:11    

donc tu as juste repris un sujet qui ne parlait pas du même problème pour poser ta question, c'est rarement une bonne idée
[:proy]


---------------

Reply

Marsh Posté le 03-10-2008 à 14:33:07    

Ill Nino a écrit :

J'le traitais pas d'incompétent, j'trouve juste ca nul de venir prendre les gens de haut. C'est un forum pour experts en dev ici? :o
 
Et comme dit c'est un SQL en direct dans la BDD que je faisais...
 
Mon problème était avec des LIKE et les pseudos regex qui commencent et finissent par le fameux ' . Rechercher ce ' dans la regex la coupait en deux.
 
J'ai p'etre mal vu sinon, mais j'trouve ca dommage que SQL Server ne permette pas l'utilisation de vraie regex d'ailleurs... Ca serait bien pratique...


 
non mais ton formulaire il est fait en quel langage?
Parce-que franchement il FAUT utiliser des requêtes préparées si tu veux éviter les ennuis...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:34:15    

skeye a écrit :


 
non mais ton formulaire il est fait en quel langage?
Parce-que franchement il FAUT utiliser des requêtes préparées si tu veux éviter les ennuis...


Je n'ai pas de formulaire... :D J'fais de l'analyse de DB a sec... :D


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 14:37:16    

donc ton premier post raconte n'importe-quoi.[:doc petrus]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:38:36    

skeye a écrit :

donc ton premier post raconte n'importe-quoi.[:doc petrus]


C'est pas moi le premier post...


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 14:39:35    

ouh pinaise.[:pingouino]
Donc  
1) Tu n'as pas "exactement le même problème"
2) Je suis mal réveillé.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:40:28    

3) tu as forcé sur l'apéro a midi


---------------

Reply

Marsh Posté le 03-10-2008 à 14:40:44    

même pas [:sadnoir]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:41:23    

moi si , et j'avais compris avant toi  
 
faut te poser les bonnes questions maitnenant   [:sophievvl]


---------------

Reply

Marsh Posté le 03-10-2008 à 14:44:12    

Ok, ok, j'ai pas exactement le meme probleme que lui alors... :D C'est vrai... Mais les causes et les consequences sont les memes non? :??: Un ' qui vient couper une chaine en deux et ca fout le binz...


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 14:46:22    

Ill Nino a écrit :

Ok, ok, j'ai pas exactement le meme probleme que lui alors... :D C'est vrai... Mais les causes et les consequences sont les memes non? :??: Un ' qui vient couper une chaine en deux et ca fout le binz...


oui, mais la solution est complètement différente.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 14:47:39    

ben non

 

d'un coté ,on parle de sécuriser un formulaire ( automatiquement ) , de l'autre de requetes construites à la main. Donc d'un coté , cas e fait avec le langage utilisé coté serveur ( php/asp / ... ) et de l'autre , c'est une façon d'ecrire sa requêtes

 

on en revient donc au coeur du sujet
 [:prozac]

 

Message cité 1 fois
Message édité par flo850 le 03-10-2008 à 14:47:54

---------------

Reply

Marsh Posté le 03-10-2008 à 14:50:40    

skeye a écrit :


oui, mais la solution est complètement différente.


J'sais pas quoi te repondre la... C'est quoi la question?
 
"SQL Server : dé-spécialiser guillemets ?" moi aussi il fallait faire ca...


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 14:51:39    

flo850 a écrit :

ben non  
 
d'un coté ,on parle de sécuriser un formulaire ( automatiquement ) , de l'autre de requetes construites à la main. Donc d'un coté , cas e fait avec le langage utilisé coté serveur ( php/asp / ... ) et de l'autre , c'est une façon d'ecrire sa requêtes
 
on en revient donc au coeur du sujet  
 [:prozac]  
 


Ouhla, tu viens de casser le truc la. On aurait pu tenir toute l'aprem sur cette discussion de sourds... :D


---------------
Faut qu'on court comme des lions, des tigres et des ours!
Reply

Marsh Posté le 03-10-2008 à 15:08:43    

skeye a écrit :

(oui enfin en sql brut les requêtes préparées hein...[:petrus75])


C'est fait pour ça, un peu [:pingouino]
 
Tu confonds pas avec les stored procs?

Ill Nino a écrit :

Ok, ok, j'ai pas exactement le meme probleme que lui alors... :D C'est vrai... Mais les causes et les consequences sont les memes non? :??: Un ' qui vient couper une chaine en deux et ca fout le binz...


Et la réponse est la même, prepared statement et non ta soupe immonde.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 15:10:03    

masklinn a écrit :


C'est fait pour ça, un peu [:pingouino]
 
Tu confonds pas avec les stored procs?


 
WTF? S'il écrit son sql à la main dans un outil dédié il va pas s'amuser à y coller des variables.[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 15:11:28    

skeye a écrit :

WTF? S'il écrit son sql à la main dans un outil dédié il va pas s'amuser à y coller des variables.[:pingouino]


Ca l'empêche pas d'utiliser des prepared statements, à la base c'est une fonctionalités des DBs ce truc pas des langages, et MySQL expose une interface SQL pour :o

 

http://dev.mysql.com/tech-resource [...] ments.html bon ok c'est un peu verbeux, mais avec ça il est tranquille [:spamafote]

Message cité 1 fois
Message édité par masklinn le 03-10-2008 à 15:12:55

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 15:12:45    

un peu verbeux ?  
 
c'est comme dire qu'il y aun peu de parenthèses en lisp


---------------

Reply

Marsh Posté le 03-10-2008 à 15:13:43    

flo850 a écrit :

un peu verbeux ?

 

c'est comme dire qu'il y aun peu de parenthèses en lisp


Faut pas abuser non plus, ça prend 2 lignes, et si une query donnée doit être effectuée plusieurs fois ça coûte quasiment plus rien (enfin c'est complètement con qu'ils forcent à utiliser des variables plutôt que des valeurs, postgres s'mieux [:petrus75])


Message édité par masklinn le 03-10-2008 à 15:16:26

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 15:20:31    

masklinn a écrit :


Ca l'empêche pas d'utiliser des prepared statements, à la base c'est une fonctionalités des DBs ce truc pas des langages, et MySQL expose une interface SQL pour :o
 
http://dev.mysql.com/tech-resource [...] ments.html bon ok c'est un peu verbeux, mais avec ça il est tranquille [:spamafote]


 
ça a à peu près aucun intérêt en-dehors d'une procédure stockée, ça.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 15:23:57    

skeye a écrit :

ça a à peu près aucun intérêt en-dehors d'une procédure stockée, ça.:o


Ben si, ça a l'intérêt de pas devoir échapper manuellement ses guillemets, et d'être sûr que ça va marcher sans se vautrer, ce qui est le but recherché ici d'après ce que j'ai pu comprendre [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-10-2008 à 15:38:40    

masklinn a écrit :


Ben si, ça a l'intérêt de pas devoir échapper manuellement ses guillemets, et d'être sûr que ça va marcher sans se vautrer, ce qui est le but recherché ici d'après ce que j'ai pu comprendre [:pingouino]


Non mais faut arrêter de déconner, si tu veux éviter les soucis en tapant une requête à la main tu le fais dans un éditeur digne de ce nom, c'est tout.[:pingouino]
Evidemment, je peux lancer sql developper et remplacer toutes les valeurs par :valeur et renseigner les infos à l'exécution, mais ça apporte rien, là. Vraiment rien. :o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-10-2008 à 15:40:36    

c'est clari , a moins d'avoir vraiment du temps a perdre  
 
tu t'habitue vite a ton nouveau statut :o


---------------

Reply

Marsh Posté le 03-10-2008 à 18:14:57    

hé ben putain... j'ai callé l'affaire au milieu. z'avez fini de traumatiser les nouveaux comme ça ? :o
 
ceci dit, je suis pas d'accord avec masklinn sur un point : si on code direct dans un requêteur sql, les variables ça résoud pas les soucis de guillements : ils se posent tout pareil au moment d'affecter les variables :o

Reply

Marsh Posté le 03-10-2008 à 19:10:20    

MagicBuzz a écrit :

hé ben putain... j'ai callé l'affaire au milieu. z'avez fini de traumatiser les nouveaux comme ça ? :o

 

ceci dit, je suis pas d'accord avec masklinn sur un point : si on code direct dans un requêteur sql, les variables ça résoud pas les soucis de guillements : ils se posent tout pareil au moment d'affecter les variables :o


dépend de l'outil.[:dawao]


Message édité par skeye le 03-10-2008 à 19:10:28

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed