07. oktober 2003 - 12:00Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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 '.
-> 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 :-)
Ø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 å.
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.
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.