Avatar billede meltinis Nybegynder
14. januar 2004 - 21:33 Der er 17 kommentarer og
1 løsning

Metode i ASP til tilpasning af streng til database

Jeg har brug for en metode som tilpasser en streng til en database. Dvs. den skal tilpasses til min SQL sætning. Det den i grunden skal gøre er at fjerne "kritiske" tegn fra strengen så jeg ikke får fejl når jeg execute'er den. Jeg ved det findes til PHP, men findes det også til ASP?
Avatar billede eagleeye Praktikant
14. januar 2004 - 21:39 #1
Ja man skal selv gøre det ved at ændre en ' til to ''

str = "dadfadf'adfadfaf"
str = Replace(str,"'","''")

Så kan man bruger str uden problem i en SQL sætning:

SQL = "insert into tabelnavn (kol) values ('" & str & "')"
Avatar billede zedios Nybegynder
14. januar 2004 - 21:44 #2
Mener du kan bruge "replace"
Avatar billede meltinis Nybegynder
14. januar 2004 - 21:45 #3
Ja ok... den har jeg også lavet nu, men jeg tænkte om der var en funktion som fjerner alle på én gang. Det er lidt problematisk at skulle skrive dem alle flere gange. (der kan man selvfølgelig bare selv lave funktionen)
Avatar billede zedios Nybegynder
14. januar 2004 - 21:46 #4
Damn, havde ikke lige refresh'ed - glem mit svar ..
Avatar billede eagleeye Praktikant
14. januar 2004 - 21:49 #5
Den tager alle i strengen hvis der er flere. Eller hvordan mener du?
Avatar billede meltinis Nybegynder
14. januar 2004 - 21:51 #6
Helt i orden :)
Jeg skal have fjernet både " og ' fra mine sætninger da det er bygget sådan op at " afslutter min: SQL = ".....
og ' afslutter og starter mine variabler i selve sætningen: WHERE by = 'hello'
Men der findes altså ikke en funktion som selv sørger for dette :(
Avatar billede eagleeye Praktikant
14. januar 2004 - 21:56 #7
Der ingen grund til at fjerne " det stopper ikke SQL = "... linjen.
Hvis man i en streng vil skriver " skriver man også to efter hinanden "":
str = "en test "" der var kun en når man skriver den ud"

Men ja så må man selv lave en funktion som kan ændre det man ønsker.
Avatar billede meltinis Nybegynder
14. januar 2004 - 21:58 #8
>>>Eagleeye. Har du nogle forslag til hvad man skal udskifte ' og " til? Jeg bruger lige nu ' = | og " = ¤ i den henseende at det ikke er tegn som normalt bliver benyttet så ofte.
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:01 #9
Du kan lave en funktion og bruge den til det:


function fixStr(tmp)
  tmp = replace(tmp,"'","?")
  fixStr = replace(tmp,"""","?")
end function


str = "dadfa'df"
str = fixStr(str)
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:02 #10
Det skulle så være | først og ¤ i sidste:

function fixStr(tmp)
  tmp = replace(tmp,"'","|")
  fixStr = replace(tmp,"""","¤")
end function
Avatar billede meltinis Nybegynder
14. januar 2004 - 22:03 #11
Jeg har lige lavet en funktion som minder lidt om din... Jeg har lagt den i en seperat fil så den kan include'es der hvor jeg skal bruge den:
<%
funktion tildb(streng)
    streng = replace(streng, """", "|")
    streng = replace(streng, "'", "¤")
    response.Write(streng)
end funktion

funktion fradb(streng)
    streng = replace(streng, "|", """")
    streng = replace(streng, "¤", "'")
    response.Write(streng)
end funktion
%>

Burde den ikke gøre det?
Avatar billede meltinis Nybegynder
14. januar 2004 - 22:04 #12
OK det ser lidt underlig ud her på siden... jeg har lige tilpasset den så det er nemmere at se:
<%
funktion tildb(streng)
    streng = replace(streng, " " " ", "|")
    streng = replace(streng, " ' ", "¤")
    response.Write(streng)
end funktion

funktion fradb(streng)
    streng = replace(streng, "|", " " " ")
    streng = replace(streng, "¤", " ' ")
    response.Write(streng)
end funktion
%>
Avatar billede meltinis Nybegynder
14. januar 2004 - 22:05 #13
Får man selv en email når man har lavet et svar??? Det er sku'da åndsvagt. Det er da også noget nyt :(
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:07 #14
Jo det kan du gøre ;)

Men hvis du ændre en ' til to '' så behøver du kun replace en gang før du smider i databasen når du skriver det ud vil der kun være en ' og der er som før sagt ikke nødvenigt at ændre en " til to "".

Ja det må være nyt, og en fejl, man får mail på for sine egne svar. Det har jeg nu ikke modtaget.
Avatar billede meltinis Nybegynder
14. januar 2004 - 22:14 #15
Er det ikke nødvendigt? Hvad nu hvis bruger skriver:
>Hej "allesammen"<
Det bliver så til:
SQL = "INSERT INTO BLA(besked) VALUES('Hej "allesammen"');

Der vil min SQL sætning set med ASP sidens øjne afslutte lige før [allesammen].
Eller hvad?
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:22 #16
Det kommer an på hvordan man skriver det ;)

Hvis vi taget et lille eks, i et input felt kaldet navn skriver man: Hej "allesammen"

Når man ligger i databasen hedter man strengen
str = Request.Form("navn")
SQL = "INSERT INTO BLA(besked) VALUES('" & str & "');"

Skriver man så SQL sætningen ud vil der stå:
INSERT INTO BLA(besked) VALUES('Hej "allesamme"');

men det som ligger i strengen er dette hvis man kunne se alle tegn:
INSERT INTO BLA(besked) VALUES('Hej ""allesamme""');
Præsis som man i PHP skriver \ foran " i en echo.

Hvis man vil skrive sin SQL sætning ud i et som en streng skal man skrive to efter hinanden sådan her:
SQL = "INSERT INTO BLA(besked) VALUES('Hej ""allesammen""');"

Og skriver man så SQL sætningen ud vil der stå:
INSERT INTO BLA(besked) VALUES('Hej "allesamme"');


I SQL skriver man to pinger efter hinanden for at få en ' og på samme måde gøre man i VBScript med " i strenge. Hvis man vil havde en " i en streng skal man skrive to "".
Avatar billede meltinis Nybegynder
14. januar 2004 - 22:29 #17
OK.. så det du siger er at " udligner sig selv når det kommer ind som streng... Det havde jeg faktisk ikke tænkt på :) Tak for det...
Nu synes jeg du har fortjent dine 15 point :D
Nu har du før fået point af mig og det er sikkert ikke sidste gang. Du får for lidt for dette, men du får bare nogle ekstra næste gang...OK!?
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:32 #18
Ja det helt i orden ;)
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