Avatar billede trine_h Nybegynder
07. oktober 2003 - 12:00 Der er 10 kommentarer og
1 løsning

problem med apostroffer

Jeg har et tekstfelt hvis indhold bliver indsat i en database problemet er at jeg får en fejl hvis teksten indeholder apostroffer - hvordan undgår jeg det?
Avatar billede nmh Nybegynder
07. oktober 2003 - 12:06 #1
Er det databsen, der giver fejlen, eller er det noget i dit eget program?
Avatar billede keysersoze Ekspert
07. oktober 2003 - 12:08 #2
benyt funktionen replace hvor du erstatter en ' med to ''

sådan;

MYVAR = replace(request.form("DINFORM"),"'","''")

så er MYVAR lige til at sætte ind i databasen uden og det burde være uden fejl
Avatar billede trine_h Nybegynder
07. oktober 2003 - 12:08 #3
Fejlen opstår kun hvis der benyttes apostroffer
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator.
Avatar billede lklingenberg Nybegynder
07. oktober 2003 - 12:16 #4
Og hvis databasen kun bruges til webben, kan man anvende replace således:
myVar = Replace(Request.Form("myForm"),"'","'")
Dette kan dog kun anbefales hvis data _kun_ bruges til webben, da ' her tolkes som '.
Avatar billede keysersoze Ekspert
07. oktober 2003 - 12:19 #5
lklingenberg >> ...og så er det en rigtig dårlig idé da du på den måde ændrer på det input brugeren kommer med - det gør du ikke med min løsning
Avatar billede lklingenberg Nybegynder
07. oktober 2003 - 12:25 #6
-> keysersoze:
Det er korrekt! Det er en afvejning af hvilke datainput der er sandsynlige i den enkelte form. Hvis man forestiller sig at der vil komme en lang række indtastninger a la

Jens' cykel
Hans' bil
Don't write "'" - you'll f... up my database!

Her vil en erstatning med '' være meningsforstyrrende - med mindre man, naturligvis, i output laver en Replace(rs("myVar").Value, "''", "'"), og det er jo et eller andet sted en afart af min model :-)
Avatar billede keysersoze Ekspert
07. oktober 2003 - 12:32 #7
men hvis du skriver;

Jens' cykel
Hans' bil
Don't write "'" - you'll f... up my database!

vha min funktion - så vil der ud nogen form for replaces ved udtræk fra databasen blive vist følgende på siden;

Jens' cykel
Hans' bil
Don't write "'" - you'll f... up my database!

og det er der vel intet meningsforstyrrende i??
Avatar billede lklingenberg Nybegynder
07. oktober 2003 - 12:41 #8
Øh...? Nej, det er der bestemt ikke! Bliver '' automatisk tolket som ' i output fra en database? Det var jeg ikke klar over. Hvis det er rigtigt, så bøjer jeg mig i støvet og erkender at min model er uhensigtsmæssig. Dog vil jeg sige at man alligevel i html-ouput bør erstatte specielle tegn (', ", &, * etc.) med deres ascii alter ego, såvel som man bør erstatte æ, ø og å.
Avatar billede keysersoze Ekspert
07. oktober 2003 - 12:45 #9
der bliver IKKE indsat '' i databasen - kun '

og mht til ', ", &, * etc så bør disse _heller_ ikke erstattes... kun ' skal erstattes ved indsætning i db - vil man erstatte noget andet skal det være ved udtræk fra databasen.
Avatar billede lklingenberg Nybegynder
07. oktober 2003 - 12:59 #10
Ok, så hvis man i sin SQL string sender '' afsted bliver der indsat ' i db... Er jeg ved at have fat i den ;-)

Mht. specialtegnene, så var det også det jeg mente. Jeg skrev: "...i html-output bør erstatte..."
Avatar billede trine_h Nybegynder
08. oktober 2003 - 09:14 #11
tak for de mange kommentarer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester