Avatar billede cult Nybegynder
12. juni 2004 - 16:20 Der er 13 kommentarer og
1 løsning

Syntax error in INSERT INTO statement ?

Hejsa Folkens...

Jeg er for nylig begyndt med ASP, og leger i øjeblikket med nogle små simple scripts... Jeg er i gang med at prøve at kode en meget simpel gæstebog, men jeg får en fejlmeddelese jeg ikke helt ved hvad jeg skal gøre ved....

Jeg har før fået rettet (og forstået) flere fejl ved at søge på google, eksperten og lign, men den her syntes jeg ikke rigtig at kunne finde en løsning på, selv om den nok er simpel :)

Fejlen opstår i en asp fil der skal modtage data fra min form, koden følger:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.MDB)}; DBQ=" & "C:\Inetpub\db\tw.mdb"
Conn.Open DSN

strSQL = "Insert into Messages (Navn, E-Mail, Besked, Dato) "

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & Request.Form("TWnavn") & "', "
strSQL = strSQL & "'" & Request.Form("TWmail") & "', "
strSQL = strSQL & "'" & Request.Form("TWmsg") & "', "
strSQL = strSQL & "'" & Now & "')"

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing

Response.Redirect "default.asp"
%>

Fejlen IIS smider tilbage er:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/tw/process.asp, line 26

Nogen der kan hjælpe mig lidt vidre? :)

På forhånd tak!
Avatar billede cool_casper Nybegynder
12. juni 2004 - 16:23 #1
Prøv at udskrive din query sådan her:

...
strSQL = strSQL & "'" & Request.Form("TWmail") & "', "
strSQL = strSQL & "'" & Request.Form("TWmsg") & "', "
strSQL = strSQL & "'" & Now & "')"
Response.Write strSQL
Conn.Execute(strSQL)
...

Hvad får du ud?
Avatar billede erikjacobsen Ekspert
12. juni 2004 - 16:23 #2
strSQL = "Insert into Messages (Navn, [E-Mail], Besked, Dato) "
Avatar billede cult Nybegynder
12. juni 2004 - 16:31 #3
Erik, fejlbesked kommer ikke mere nu efter [] om E-Mail...

Men, der bliver desværre ikke sat noget i databasen, jeg har nu hentet indholdet af strSQL ud, som Casper siger, og den skriver:
Insert into Messages (Navn, [E-Mail], Besked, Dato) values( '', '', '', '12-06-2004 16:32:47')

Det eneste den fanger er dato'en, men ikke det jeg har indtastet i min formular... :(
Avatar billede erikjacobsen Ekspert
12. juni 2004 - 16:33 #4
Request.Form kræver at du bruger <form method="post"> - gør du det?
Avatar billede cult Nybegynder
12. juni 2004 - 16:38 #5
Nej, den havde jeg ikke fået med, pinlig fejl :)

Mange tak for hjælpen begge to, i skal lige smide svar så jeg kan give jer points :)

Erik, jeg vil også gerne vide hvorfor det er der skal [ ] omkring lige præcis E-Mail i Insert Into.... Tak :)
Avatar billede cool_casper Nybegynder
12. juni 2004 - 16:39 #6
Medmindre dit datofelt er af typen tekst så er det bedst at gøre sådan:
..
strSQL = strSQL & "'" & Request.Form("TWmail") & "', "
strSQL = strSQL & "'" & Request.Form("TWmsg") & "', "
strSQL = strSQL & "Now())"
..
Avatar billede cool_casper Nybegynder
12. juni 2004 - 16:39 #7
Det er fordi E-mail er en reserveret ord! :)
Avatar billede cool_casper Nybegynder
12. juni 2004 - 16:39 #8
svar
Avatar billede erikjacobsen Ekspert
12. juni 2004 - 16:40 #9
Der skal [...] omkring reserverede ord, og det der ikke er lovlige navne i SQL.
Her er det bindestrengen, der er "ulovlig". Det kan være anderledes i andre systemer
end lige Access.
Avatar billede erikjacobsen Ekspert
12. juni 2004 - 16:41 #10
...og ellers tak, jeg samler slet ikke på point.
Avatar billede cult Nybegynder
12. juni 2004 - 16:54 #11
okay, kan man så ikke bare sætte [..] omkring alle tabelnavne i Insert Into linien? Så man er sikret...?
Avatar billede cool_casper Nybegynder
12. juni 2004 - 16:55 #12
Det kan man i realiteten godt jo.. :)
Avatar billede erikjacobsen Ekspert
12. juni 2004 - 16:56 #13
Jo, det er der også nogen der gør. Så er man så dejligt fri for at tænke på hvad der
er reserverede ord osv. Det er også fremtidssikret, måske bliver 'besked' en
gang et reserveret ord i sql .... ;)
Avatar billede cult Nybegynder
12. juni 2004 - 17:21 #14
Helt kanon!! I skal begge igen have mange tak for hjælpen...!

Hvis du ikke vil have points Erik, så giver jeg da dem alle til Casper, herligt at se at der er nogle der er her for at hjælpe andre frem for points.. det er vel det som det hele går ud på :)
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