Jeg har lidt problemer med at se hvorfor den nedenstående smule kode giver
mig en Syntax Error... men måske jeg har stirret mig blind, jeg plejer ikke
at have problemer med at putte data i en database.....
--------------
dim navn, adresse, post, by, telefon,email, birdato,vip,nyhedsbrev, MyConn,
Sql
navn = request.form("navn")
adresse = request.form("adresse")
post = request.form("post")
by = request.form("by")
telefon = request.form("telefon")
email = request.form("email")
birdato =(
request.form("fdag"))+(request.form("fmd"))+(request.form("faar"))
vip = request.form("vip")
nyhedsbrev = request.form("nyhedsbrev")
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open "DBQ="& Server.MapPath("medlemmer.mdb") &"; DefaultDir=DBQ="&
Server.MapPath("\") &";Driver={Microsoft Access Driver (*.mdb)};"
Sql="insert into data "
Sql = Sql + "(navn, adresse, post, by, telefon, email, birdato, vip,
nyhedsbrev) "
Sql = Sql + "Values ('" + navn + "', '" + adresse + "', '" + post + "', '"
+ by + "', '" + telefon + "', '" + email + "' , '" + birdato + "', '" + vip
+ "', '" + nyhedsbrev + "')"
Response.Write Sql
MyConn.Execute(Sql)
---------------
Svaret jeg får er :
insert into data (navn, adresse, post, by, telefon, email, birdato, vip,
nyhedsbrev) Values ('knud k', 'hampgade 2', '5500', 'pestved', '75622662',
'kn...@hotmail.dk' , '24121968', 'ON', 'ON')
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO
statement.
/tilmelding2.asp, line 215
Tabellen data i databasen "medlemmer" indeholder de nævnte felter, stavet
korrekt. Det er alle almindelige tekst-felter.
Hvor går det galt for mig???
Lars B
- Prøv at sætte [] rundt om "by" (det er da vist et reserveret ord)
(altså "..., post, [by], telefon, ...")
- Prøv også at sætte [] om "data" (det virker også sådan lidt
reserveret?)
- Du burde nok escape værdier inden du sender dem til basen (altså lave
' til '')
- Prøv at klippe den færdige sql ind i en forespørgsel i access, så er
den lidt flinkere til at vise *hvor* der er noget galt
--
Lauritz
> - Prøv at sætte [] rundt om "by" (det er da vist et reserveret ord altså
"..., post, [by], telefon, ...")
> - Prøv også at sætte [] om "data" (det virker også sådan lidt reserveret?)
Du er satme en knag.... det havde jeg sgu ikke selv fundet ud af... okay,
fremover bruger jeg tyske eller engelske ord til at navngive mine variabler
:))
> - Du burde nok escape værdier inden du sender dem til basen (altså lave '
til '')
Hvis jeg gør det, vil den så ikke prøve at indsætte variabelnavnene i stedet
for indholdet af variablen?
> - Prøv at klippe den færdige sql ind i en forespørgsel i access, så er den
lidt flinkere til at vise *hvor* der er noget galt
Det behøvede jeg ikke engang.... jeg lavede bare de to [], så var den der!
> Lauritz
Det kommer an på hvor du gør det :o) Det jeg mente var så'en:
Sql = ""
Sql = Sql & "INSERT INTO data ("
Sql = Sql & "navn, adresse, post, [by], telefon, email, "
Sql = Sql & "birdato, vip, nyhedsbrev"
Sql = Sql & ") VALUES ("
Sql = Sql & "'" & Replace(navn, "'", "''") & "', "
Sql = Sql & "'" & Replace(adresse, "'", "''") & "', "
Sql = Sql & "'" & Replace(post, "'", "''") & "', "
Sql = Sql & "'" & Replace(by, "'", "''") & "', "
Sql = Sql & "'" & Replace(telefon, "'", "''") & "', "
Sql = Sql & "'" & Replace(email, "'", "''") & "' , "
Sql = Sql & "'" & Replace(birdato, "'", "''") & "', "
Sql = Sql & "'" & Replace(vip, "'", "''") & "', "
Sql = Sql & "'" & Replace(nyhedsbrev, "'", "''") & "'"
Sql = Sql & ")"
--
Lauritz
> > > - Du burde nok escape værdier inden du sender dem til basen (altså
lave ' til '')
> > Hvis jeg gør det, vil den så ikke prøve at indsætte variabelnavnene i
stedet
> > for indholdet af variablen?
> Det kommer an på hvor du gør det :o) Det jeg mente var så'en:
>
- snip en del kode -
> --
> Lauritz
Ahh... på den fagong... er der noget "uetisk" eller direkte "slemt" ved ikke
at gøre det?
Lars B. Jensen
"Det startede med at han slog igen...."
I visse tilfælde kan du åbne op for nogle sikkerhedsproblemer (folk får
angang til at fyre sql af imod basen), så jeg syntes bare det er en gode
vane at tillæge sig.
--
Lauritz