Avatar billede Laitings Nybegynder
25. maj 2002 - 12:43 Der er 4 kommentarer og
1 løsning

tegnet ' fucker SQL

Jeg har et mindre problem med følgende kode. Det er en opslagstavle som lægger opslaget ind i en Access database.

' SQL sætning opbygges
strSQL = "Insert into OpslagsTabel ("
strSQL = strSQL & "PersonID,"
strSQL = strSQL & "Overskrift,"
strSQL = strSQL & "Besked,"
strSQL = strSQL & "Tidspunkt)"

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & Session("ID") & "',"
strSQL = strSQL & "'" & Request.Form("Overskrift")& "',"
strSQL = strSQL & "'" & Request.Form("Opslag")& "',"
strSQL = strSQL & "'" & Now & "')"

' SQL sætning eksekveres
myConn.Execute(strSQL)

Problemet er at hvis brugeren skriver tegnet ' i sit opslag tror ASP'en at linjen stopper der og så går der kage i SQL'en. Hvordan undgår man dette? Jeg kan se det virker herinde!

Håber på hjælp!

-M
Avatar billede hells Nybegynder
25. maj 2002 - 12:48 #1
Request.Form("Overskrift") = Replace(Request.Form("Overskrift"),"'","''")

Og det samme med Request.Form("Opslag")
Avatar billede Laitings Nybegynder
25. maj 2002 - 12:56 #2
Nu ser koden således ud:

' SQL sætning opbygges
strSQL = "Insert into OpslagsTabel ("
strSQL = strSQL & "PersonID,"
strSQL = strSQL & "Overskrift,"
strSQL = strSQL & "Besked,"
strSQL = strSQL & "Tidspunkt)"

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & Session("ID") & "',"
strSQL = strSQL & "'" & Replace(Request.Form("Overskrift"),"'","''")
strSQL = strSQL & "'" & Replace(Request.Form("Opslag"),"'","''")
strSQL = strSQL & "'" & Now & "')"

Men jeg får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''wassup'hejsa '25-05-2002 12:55:33''.

Hvad fa'en!?!?! :)
Avatar billede eagleeye Praktikant
25. maj 2002 - 13:01 #3
hvis du benytte Access skal der # omkring dato/yid felter. Samt skal der ikke ' omkring hvis en kolonne er defineret som tal eksvis PersonID :

' SQL sætning opbygges
strSQL = "Insert into OpslagsTabel ("
strSQL = strSQL & "PersonID,"
strSQL = strSQL & "Overskrift,"
strSQL = strSQL & "Besked,"
strSQL = strSQL & "Tidspunkt)"

strSQL = strSQL & "values( "

strSQL = strSQL & "" & Session("ID") & ","
strSQL = strSQL & "'" & Replace(Request.Form("Overskrift"),"'","''")
strSQL = strSQL & "'" & Replace(Request.Form("Opslag"),"'","''")
strSQL = strSQL & "#" & Now & "#)"
Avatar billede hells Nybegynder
25. maj 2002 - 13:02 #4
Prøv at gøre sådan i stedet:

'Skab variablerne overskrift og opslag fra formularen
overskrift = Request.Form("Overskrift")
opslag = Request.Form("Opslag")

'Udskift (') med (''):
overskrift = Replace(overskrift,"'","''")
opslag = Replace(opslag,"'","''")

' SQL sætning opbygges
strSQL = "Insert into OpslagsTabel ("
strSQL = strSQL & "PersonID,"
strSQL = strSQL & "Overskrift,"
strSQL = strSQL & "Besked,"
strSQL = strSQL & "Tidspunkt)"

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & Session("ID") & "',"
strSQL = strSQL & "'" & overskrift
strSQL = strSQL & "'" & opslag
strSQL = strSQL & "'" & Now & "')"
Avatar billede Laitings Nybegynder
25. maj 2002 - 13:14 #5
Perfekt hells. Det virkede sgu'!

Skulle bare lige huske & "'," efter overskrift og opslag så koden blev:

'Skab variablerne overskrift og opslag fra formularen
overskrift = Request.Form("Overskrift")
opslag = Request.Form("Opslag")

'Udskift (') med (''):
overskrift = Replace(overskrift,"'","''")
opslag = Replace(opslag,"'","''")

 
' SQL sætning opbygges
strSQL = "Insert into OpslagsTabel ("
strSQL = strSQL & "PersonID,"
strSQL = strSQL & "Overskrift,"
strSQL = strSQL & "Besked,"
strSQL = strSQL & "Tidspunkt)"

strSQL = strSQL & "values( "

strSQL = strSQL & "" & Session("ID") & ","
strSQL = strSQL & "'" & overskrift & "',"
strSQL = strSQL & "'" & opslag & "',"
strSQL = strSQL & "'" & Now & "')"

' SQL sætning eksekveres
myConn.Execute(strSQL)

Eagleye>>Ja du har selvfølgelig ret med de to. Men jeg bruger dato som tekst i min database og det underlige er at, den virkede sgu' også selvom der var ' rundt om PersonID!!?!?

Tak skal I ha'!
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