Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:13 Der er 16 kommentarer og
2 løsninger

INSERT INTO sætning

Jeg er snart træt af INSERT INTO sætninger...
Jeg genanvender noget af det jeg har brugt på en anden side hvor det virker...

Mit problem er at den siger at der er en syntaksfejl i INSERT INTO sætningen...

fil1.asp ser således ud:

<% Option Explicit %>

<% Dim user, pass
    user = Trim(Request.Form("user"))
    pass = Trim(Request.Form("pass"))

Dim cn, cnstr, sti
sti = server.mappath("db.mdb")
set cn = server.createobject("adodb.connection")
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data Source=" & sti & ";"
cn.connectionstring = cnstr
cn.open

Dim rs, sql
set rs = server.createobject("adodb.recordset")
sql = "Select * from users Where brugernavn='"& user & "' And password='" & pass & "';"
rs.open sql, cn

If Not rs.eof Then
    Session.contents("crew") = True
    Session("brugernavn") = rs.fields("brugernavn")
    Session("password") = rs.fields("password")
    Session("IP") = Request.ServerVariables("REMOTE_ADDR")
    Session("dato") = date

    Response.Redirect("fil.asp")
   
Else Session.contents("crew") = Not True
    Response.Redirect("login.asp?fejl=1")
End If   

rs.close
set rs = nothing
cn.close
set cn = nothing

%>

Fil2 ser således ud:

<% Dim cn, cnstr, sql
sti = server.mappath("db.mdb")
set cn = server.createobject("adodb.connection")
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;"
cnstr = cnstr & "Data Source=" & sti & ";"
cn.connectionstring = cnstr
cn.open

sql = "insert into logon (User, Dato, Ip) values('" & Session("brugernavn") & "',#" & Session("dato") & "#," & Session("IP") & ")"
cn.execute sql

cn.close
set cn = nothing
Response.Redirect("adminindex.asp")
%>

Hvad har jeg nu gjort galt???
Avatar billede entracore Nybegynder
31. januar 2002 - 20:17 #1
Session("dato") skal omsluttes af plinger "'" '" & Session("Dato") & "'
Avatar billede entracore Nybegynder
31. januar 2002 - 20:18 #2
Og hvad er "#" for noget ???
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:19 #3
Det var noget jeg fik at vide af en anden her på eksperten, men det ang. en UPDATE-sætning... Så det er måske kun der, der skal bruges #..
Avatar billede entracore Nybegynder
31. januar 2002 - 20:21 #4
Fjern det - det tjener så vidt jeg ved intet formål... andet end at generere fejl ;-)
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:23 #5
Det hjælper ikke noget at sætte ' (plinger) omkring Session("Dato")...
Avatar billede entracore Nybegynder
31. januar 2002 - 20:24 #6
Hvad siger fjelmeddelsen ????
Avatar billede entracore Nybegynder
31. januar 2002 - 20:27 #7
Og lige et tip. Du åbner din DB connection når du laver din select statement fra en tabel. Dernæst lukker du den også åbner du den igen når du laver din insert statement.

Det kan ikke rigtig betale sig. Åben databasen i starten af dit dokument og luk denne i slutningen af dit dokument.
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:27 #8
Den siger:

Fejltype:
Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl i INSERT INTO-sætningen.
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:28 #9
Jamen, det er jo 2 forskellige filer...
Avatar billede entracore Nybegynder
31. januar 2002 - 20:32 #10
To filer - shit undskyld.... :-)
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:34 #11
Men hvorfor siger den at der er en syntaksfejl??? Jeg forstår det ikke...
Avatar billede entracore Nybegynder
31. januar 2002 - 20:36 #12
Sql = "Insert Into Login(User, Dato, Ip) Values('" & Session("brugernavn") & "', '" & Session("dato") & "', '" & Session("IP") & "')"

Går galt med ip adressen. Du forsøger at indsætte ikke numeriske værdier i et felt der kun kan indeholder numeriske værdier og "." er ikke en numerisk værdi. Du skal ændre datatype på din IP kolonne til f.eks. Text.
Avatar billede entracore Nybegynder
31. januar 2002 - 20:37 #13
og sætte plinger uden om Session("IP")
Avatar billede agg-zeus Nybegynder
31. januar 2002 - 20:38 #14
Jeg bliver med at få samme fejl...
Avatar billede entracore Nybegynder
31. januar 2002 - 20:40 #15
Så fjern plingerne omkrin Session("Dato") - det er meget muligt at jeg husker forket.
Avatar billede entracore Nybegynder
31. januar 2002 - 23:12 #16
eller prøv at omdøbe dit kolonnenavn "User" til f.eks. "Brugere". Jeg mener at "User" er et reseveret ord i Access.
Avatar billede bernhof Nybegynder
01. februar 2002 - 15:58 #17
Dato er et dato-felt i databasen, skal der # udenom, som du også selv har gjort i den originale sætning!
Prøv evt., som entracore siger, at ombøbe 'User' til 'Bruger'.
Desuden forårsages syntax-fejl tit af at en af værdierne du indsætter indeholder '. For at undgå dette, skriv som følger:
Replace(Session("brugernavn"),"'","''")
og evt. også:
Replace(Session("IP"),"'","''")
i insert into-sætningen.

resultat:

Sql = "INSERT INTO login (Bruger, Dato, Ip) VALUES ('" & Replace(Session("brugernavn"),"'","''") & "', '" & Session("dato") & "', '" & Replace(Session("IP"),"'","''") & "')"

Virker det? (Har ikke mulighed for at teste)

/Mikbj
Avatar billede agg-zeus Nybegynder
01. februar 2002 - 20:43 #18
Jeg takker mange gange til jer begge... Nu virker det :-)
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