Avatar billede fuglen Nybegynder
15. august 2003 - 19:23 Der er 11 kommentarer og
1 løsning

Problem med ' tegnet

Jeg er igang med at lave en referat-database -men når jeg, via asp, vil indsætte en tekst melder den en fejl hvis teksten indeholder tegnet '

-er der nogen der kan svare på hvorfor ?

- - - - - - - - - - - - - - - - - - - - - -
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 's økonomiske og sociale råd')' at line 1
- - - - - - - - - - - - - - - - - - - - - -
Avatar billede lalledenby Nybegynder
15. august 2003 - 19:24 #1
prøv \ foran ', dvs \'
Avatar billede sbm Nybegynder
15. august 2003 - 19:27 #2
Jeg er ikke sikker med MySQL, but here goes...

En del databaser bruger ' som streng-terminering. Dvs. den tror du er færdig med dit streng-input, og der så kommer noget ny. En ny streng el.lign. - alt afhængig af hvordan din SQL-sætning ser ud.

De fleste databaser lader dig gør opmærksom på at det IKKE er en strengterminering, men et ' der rent faktisk er en del af indholdet, ved at skrive to af dem lige efter hinanden istedet.

Hvis du gerne vil indsætte DON'T DO IT
skal du altså rette det til DON''T DO IT
og der vil reelt blive indsat DON'T DO IT i tabellen.
Avatar billede erikjacobsen Ekspert
15. august 2003 - 19:28 #3
Du kan lave en

  s = "peter's økonomi"

  s = replace(s,"'","''");

og så bruge s.
Avatar billede erikjacobsen Ekspert
15. august 2003 - 19:28 #4
Ups ingen semikolon *g*

  s = replace(s,"'","''")
Avatar billede arne_v Ekspert
15. august 2003 - 19:28 #5
Prøv at erstat en ' med to ''.
Avatar billede sbm Nybegynder
15. august 2003 - 19:30 #6
...med andre ord: Du skal blot lave en string-replace.

Alt afhængig af hvad du programmerer i, kan det gøre på forskellige måder. Laver du det i ASP kan du hente hjælp i den kategori osv...

Men husk at du så skal gøre det for alle felter, hvor input muligvis-måske indholder et '
Avatar billede fuglen Nybegynder
15. august 2003 - 19:31 #7
Det dur ikke... teksten der skal i databasen bliver sendt fra en form.

Jeg kan ikke rigtigt bede mine brugere om at skrive et \ hver gang de vil skrive '

F.eks. "FN's økonomiske råd" -> "FN\'s økonomiske "

:D
Avatar billede fuglen Nybegynder
15. august 2003 - 19:32 #8
-hov der var kommet mange jeg kunne bruge... min besked var til "lalledenby
"
Avatar billede erikjacobsen Ekspert
15. august 2003 - 19:33 #9
Det skal du heller ikke. Brug blot den linie med replace,  men med dine
egne variabelnavne  -  sfø'lig
Avatar billede arne_v Ekspert
15. august 2003 - 19:33 #10
Du skal ikke bede dine bruger eom noget.

Dit server-side script (PHP eller ASP) skal tage form
input med en ' og erstattte den med to '' inden den gemmer
i databasen.
Avatar billede fuglen Nybegynder
15. august 2003 - 19:37 #11
Den er jeg med på "replace(Tekst, "'", "''")"

-misforstod vist bare den første kommentar ;-)

Det virker !
Avatar billede squashguy Nybegynder
15. august 2003 - 19:58 #12
Den tekniske betegnelse (hvis man udelader din løsning) er, at du tillader brugeren at lave sql injection. F.eks. hvis brugeren indtaster:

noget tekst';delete from table#

så vil ' slutte tekststrengen, og det efterfølgende vil blive fortolket som rene sql kommandoer...
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
Computerworld tilbyder specialiserede kurser i database-management

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