|
| Update problem Fra : Klaus Egebjerg |
Dato : 24-06-02 19:24 |
|
Hej
Jeg har fået et lidt sjovt problem. Jeg har lavet følgende sætning til
update af en access DB:
strQ = "UPDATE Opskrifter SET Olnavn ='"&Olnavn1&"'," & "Stil
='"&strStil&"'," & "Typ ='"&Typ&"'," & "Offentlig ='"&strOffentlig&"'," &
"Literfardig='"&strLiterfardig&"'," & "Literurt='"&strLiterurt&"'," &
"PH='"&strPH&"'," & "OG='"&strOG&"'," & "FG='"&strFG&"'," &
"Gar='"&strGar&"' WHERE Id = " & nIdd & ""
Det virker også meget godt, men hvis brugeren indtaster fx. OP's altså med '
så går den i fejl. Kan det være rigtig, at man ikke kan anvende det ?
--
Med venlig hilsen
Klaus Egebjerg
| |
Jakob Andersen (24-06-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 24-06-02 20:08 |
|
"Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
news:WyJR8.8610$va.726292@news000.worldonline.dk...
> Det virker også meget godt, men hvis brugeren indtaster fx. OP's altså med
'
> så går den i fejl. Kan det være rigtig, at man ikke kan anvende det ?
Da apostrof (') marker starten og slutningen på et stykke tekst i SQL tror
din database at rækken af tekst slutter når brugeren indtaster en apostrof.
I Access og Microsoft SQL Server neutraliserer man (også kaldet: at escape)
en apostrof vha. en apostrof mere altså sådan: ''
Dvs.at du på alle dine teksstrenge der bruges i SQL skal gøre følgende:
navnpådinvariabel = Replace( navnpådinvariabel, "'", "''" )
Jeg har skrevet en artikel om hvorfor dette sikkerhedsmæssigt også er en god
ide:
< http://activedeveloper.dk/locator.asp?guid=001000000297>
--
Jakob Andersen
| |
Jesper Stocholm (24-06-2002)
| Kommentar Fra : Jesper Stocholm |
Dato : 24-06-02 20:16 |
|
Klaus Egebjerg wrote in
news:WyJR8.8610$va.726292@news000.worldonline.dk:
> Hej
>
> Jeg har fået et lidt sjovt problem. Jeg har lavet følgende sætning til
> update af en access DB:
>
> strQ = "UPDATE Opskrifter SET Olnavn ='"&Olnavn1&"'," & "Stil
> ='"&strStil&"'," & "Typ ='"&Typ&"'," & "Offentlig
> ='"&strOffentlig&"'," & "Literfardig='"&strLiterfardig&"'," &
> "Literurt='"&strLiterurt&"'," & "PH='"&strPH&"'," & "OG='"&strOG&"',"
> & "FG='"&strFG&"'," & "Gar='"&strGar&"' WHERE Id = " & nIdd & ""
>
> Det virker også meget godt, men hvis brugeren indtaster fx. OP's altså
> med ' så går den i fejl. Kan det være rigtig, at man ikke kan anvende
> det ?
nej ... men da glypher er en del af sql-syntaksen, så skal de "escapes",
som det så smukt hedder på dansk.
Det gøres således:
strInputTmp = Request.Form("etellerandetfelt")
strInput = Replace(strInputTmp,"'","''")
strSQL = "UPDATE Table1 Set Field1 = '" & strInput & "' WHERE id=2"
:)
--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|
| |
Jakob Munck (24-06-2002)
| Kommentar Fra : Jakob Munck |
Dato : 24-06-02 22:25 |
|
>
> Det virker også meget godt, men hvis brugeren indtaster fx. OP's altså med
'
> så går den i fejl. Kan det være rigtig, at man ikke kan anvende det ?
>
Prøv at sætte denne kode ind til konvertering af dataindput, inden det går i
databasen:
indput = replace(indput, vbcrlf, "<br>" & vbcrlf)
indput = replace(indput, """", """, 1, -1, 1)
indput = replace(replace(indput, """", """, 1, -1, 1), "'", "'",
1, -1, 1)
v.h.
Jakob Munck
| |
Jakob Andersen (24-06-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 24-06-02 22:12 |
|
"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3d17893d$0$78749$edfadb0f@dspool01.news.tele.dk...
> Prøv at sætte denne kode ind til konvertering af dataindput, inden det går
i
> databasen:
> indput = replace(indput, vbcrlf, "<br>" & vbcrlf)
> indput = replace(indput, """", """, 1, -1, 1)
> indput = replace(replace(indput, """", """, 1, -1, 1), "'", "'",
> 1, -1, 1)
Dette vil skabe ekstremt ubrugbar data hvis det skal bruges i andre
sammenhænge end HTML
--
Jakob Andersen
| |
|
|