Avatar billede cdc Novice
08. september 2006 - 14:02 Der er 31 kommentarer og
1 løsning

Syntax error (missing operator) in query expression

Jeg får nedenstående fejl i mit script når jeg kun vil liste dem der har et givet navn i matchnavn.

Mit script:
            <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & ("********\matchmaker.mdb")
Conn.Open DSN

strSQL = "SELECT * FROM spiller WHERE matchnavn = " & Request("matchnavn")

Set rs = Conn.Execute(strSQL)
%>



[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'matchnavn = Juniorfondens Scramble Match'.

/hgk/match/default_players.asp, line 195
Avatar billede erikjacobsen Ekspert
08. september 2006 - 14:17 #1
strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Request("matchnavn") & "'"
Avatar billede cdc Novice
08. september 2006 - 14:23 #2
Hvis jeg vil have den sidste tilmeldte øvers på listen, hvor skal den placeres
Avatar billede madeindk Nybegynder
08. september 2006 - 14:29 #3
strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Request("matchnavn") & "' ORDER BY ID DESC " :-)
Avatar billede erikjacobsen Ekspert
08. september 2006 - 14:43 #4
Til foregående indlæg vil jeg lige tilføje: Uden de sidste tre tegn  :-)

Med du er vel klar over problemer omkring sql-injection?
Avatar billede madeindk Nybegynder
08. september 2006 - 14:48 #5
Hehe. Hvad tænker du på med problemer omkring SQL-injection?
Avatar billede erikjacobsen Ekspert
08. september 2006 - 15:15 #6
Det var nu et spørgsmål til /cdc  - lyt med, så får du jo i hvert fald en forklaring
Avatar billede cdc Novice
08. september 2006 - 15:19 #7
jo da og det fungerer, skal nok give points, og forhøjer den lidt hvis i også kan svare mig på hvordan jeg så laver denne:

response.redirect ("default_players.asp") og den så skal vises som dette f.eks:
default_players.asp?matchnavn=Trøst-/vinderturnering

Denne: response.redirect ("default_players.asp") ligge i filen hvor man gemmer sin tilmelding til matchen.

Den del af scriptet ser således ud:

<%
If Request("mode") = "ny" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & ("*******\matchmaker.mdb")

SQL= "INSERT INTO spiller (matchnavn, navn, medlemsnr, hcp, email, matchinfo)"
SQL = SQL & " VALUES ('" & request.form("matchnavn") & "','" & request.form("navn") & "','" & request.form("medlemsnr") & "','" & request.form("hcp") & "','" & request.form("email") & "','" & request.form("matchinfo") & "')"

Conn.Execute (SQL)

conn.Close
Set conn = nothing
Set SQL = nothing

'response.write "Spilleren er nu oprettet."
response.redirect ("default_players.asp")
Avatar billede cdc Novice
08. september 2006 - 15:26 #8
hvad mener du med sql-injection? ikke noget jeg har hørt om. Roder ikke så meget med webdesign mere, så jeg følger ikke med så meget
Avatar billede cdc Novice
08. september 2006 - 15:32 #9
hvis det har noget med at man bare kan skifte ?id=5 ud med ?id=6 så gør det ikke noget her, for det er kun match tilmldinger og inetet hemmelig
Avatar billede erikjacobsen Ekspert
08. september 2006 - 15:38 #10
Nej, det er indskrivning af '-tegn i inputfelter, querystrings, cookies etc. af en ondsindet bruger, der kan få dine sql-sætninger til at afsløre for meget, eller ødelægge dine data. Du er formentlig sikret med

strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Replace(Request("matchnavn"),"'","''") & "'"

Og det er egentlig basal viden, hvis man laver webapplikationer, der skal bruges ud over ens egen maskine uden nettilslutning. Det svarer lidt til at man ikke kan få kørekort til automobil uden at kende diverse færdselsregler. Men alle kan sætte sig ned og lave en "webapplication" - og i bedste fald blive til grin.  ;)
Avatar billede cdc Novice
08. september 2006 - 15:40 #11
OK tak for det...kigger på det

har du en løsning på det andet
Avatar billede cdc Novice
08. september 2006 - 15:41 #12
Vil det så sige den skal se således ud:

strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Replace(Request("matchnavn"),"'","''") & "'" ORDER BY ID DESC "
Avatar billede madeindk Nybegynder
08. september 2006 - 15:45 #13
Argh, på den måde erikjacobsen - SQL injections på den måde. Det kender jeg godt til ;-) Selvfølgelig da - troede du mente på en anden måde. Men Erik - man skal da ikke lave SQL injection, hvis man bruger ID=" & request.querystring fx. vel?

Men ja /cdc den skal se sådan ud :-) strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Replace(Request("matchnavn"),"'","''") & "'" ORDER BY ID DESC "
Avatar billede madeindk Nybegynder
08. september 2006 - 15:47 #14
Eller nej...

strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Replace(Request("matchnavn"),"'","''") & "' ORDER BY ID DESC "
Avatar billede madeindk Nybegynder
08. september 2006 - 15:47 #15
Hvad er problemet med:

<%
If Request("mode") = "ny" then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & ("*******\matchmaker.mdb")

SQL= "INSERT INTO spiller (matchnavn, navn, medlemsnr, hcp, email, matchinfo)"
SQL = SQL & " VALUES ('" & request.form("matchnavn") & "','" & request.form("navn") & "','" & request.form("medlemsnr") & "','" & request.form("hcp") & "','" & request.form("email") & "','" & request.form("matchinfo") & "')"

Conn.Execute (SQL)

conn.Close
Set conn = nothing
Set SQL = nothing

'response.write "Spilleren er nu oprettet."
response.redirect ("default_players.asp")

End if
%>
Avatar billede cdc Novice
08. september 2006 - 15:51 #16
Problemet ligger i min redirect default_players.asp den fil lister ingen da der skal stå matchnavn bag: default_players.asp?matchnavn=Trøst-/vinderturnering f.eks. så den henter dem fra DB som har tilmeldt sig denne match.

Alle sopillere ligger i en tabel som hedder spiller, og de bliver "sorteret" efter matchnavn
Avatar billede cdc Novice
08. september 2006 - 15:51 #17
hvordan kan jeg redirecte til given match rigtig
Avatar billede madeindk Nybegynder
08. september 2006 - 15:56 #18
response.redirect("default_players.asp?matchnavn=" & request.form("matchInfo")
Avatar billede cdc Novice
08. september 2006 - 16:03 #19
nu skriver du matchinfo du mener vel matchnavn? :o)
Avatar billede cdc Novice
08. september 2006 - 16:04 #20
Expected ')'

GemSpiller.asp, line 18

response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn")
-----------------------------------------------------------------------------^
Avatar billede madeindk Nybegynder
08. september 2006 - 16:09 #21
Ja, matchnavn - selvfølgelig.

Enten, så gør sådan her:
response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") & ")
Eller...
response.redirect "default_players.asp?matchnavn="&request.form("matcnavn")
Avatar billede cdc Novice
08. september 2006 - 16:16 #22
Resultat af denne: response.redirect "default_players.asp?matchnavn="&request.form("matcnavn"):

Unterminated string constant

GemSpiller.asp, line 18

response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") & ")
----------------------------------------------------------------------------------^

Resultat ef denne:

response.redirect "default_players.asp?matchnavn="&request.form("matcnavn")

GemSpiller.asp?mode=ny i adresse feltet og blank side
Avatar billede cdc Novice
08. september 2006 - 16:17 #23
en lille skrive fejl retter lige den
Avatar billede cdc Novice
08. september 2006 - 16:18 #24
så blev fejlen således:

Unterminated string constant

GemSpiller.asp, line 18

response.redirect("default_players.asp?matchnavn=" & request.form("matchnavn") & ")
-----------------------------------------------------------------------------------^
Avatar billede madeindk Nybegynder
08. september 2006 - 16:19 #25
Der skal også kun stå: response.redirect "default_players.asp?matchnavn=" & request.form("matcnavn") - ikke ":" efter det!
Avatar billede madeindk Nybegynder
08. september 2006 - 16:19 #26
response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") & "")
Avatar billede cdc Novice
08. september 2006 - 16:21 #27
Tak for alle gode inputs, smid et svar begge to, så fordeler jeg lige points
Avatar billede madeindk Nybegynder
08. september 2006 - 16:26 #28
Her er mit svar :-)
Avatar billede cdc Novice
08. september 2006 - 16:28 #29
så venter jeg lige på erikjacobsen...hvis det tager lidt tid, er jeg først tilbage mandag
Avatar billede madeindk Nybegynder
08. september 2006 - 16:34 #30
Ja, selvfølgelig. ericjakobsen kom lige med god info der.

Men ha' en rigtig god weekend :-)
Avatar billede erikjacobsen Ekspert
08. september 2006 - 18:51 #31
Tak, men jeg samler slet ikke på point.

Det er lidt tumpet at skrive
    response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") & "")
når man kan nøjes med
    response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn"))
Avatar billede cdc Novice
11. september 2006 - 08:58 #32
tak for hjælpen

/cdc
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