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
Annonceindlæg fra Computerworld
08. september 2006 - 14:17
#1
strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Request("matchnavn") & "'"
08. september 2006 - 14:23
#2
Hvis jeg vil have den sidste tilmeldte øvers på listen, hvor skal den placeres
08. september 2006 - 14:29
#3
strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Request("matchnavn") & "' ORDER BY ID DESC " :-)
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?
08. september 2006 - 14:48
#5
Hehe. Hvad tænker du på med problemer omkring SQL-injection?
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
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")
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
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
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. ;)
08. september 2006 - 15:40
#11
OK tak for det...kigger på det har du en løsning på det andet
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 "
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 "
08. september 2006 - 15:47
#14
Eller nej... strSQL = "SELECT * FROM spiller WHERE matchnavn = '" & Replace(Request("matchnavn"),"'","''") & "' ORDER BY ID DESC "
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 %>
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
08. september 2006 - 15:51
#17
hvordan kan jeg redirecte til given match rigtig
08. september 2006 - 15:56
#18
response.redirect("default_players.asp?matchnavn=" & request.form("matchInfo")
08. september 2006 - 16:03
#19
nu skriver du matchinfo du mener vel matchnavn? :o)
08. september 2006 - 16:04
#20
Expected ')' GemSpiller.asp, line 18 response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") -----------------------------------------------------------------------------^
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")
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
08. september 2006 - 16:17
#23
en lille skrive fejl retter lige den
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") & ") -----------------------------------------------------------------------------------^
08. september 2006 - 16:19
#25
Der skal også kun stå: response.redirect "default_players.asp?matchnavn=" & request.form("matcnavn") - ikke ":" efter det!
08. september 2006 - 16:19
#26
response.redirect("default_players.asp?matchnavn=" & request.form("matcnavn") & "")
08. september 2006 - 16:21
#27
Tak for alle gode inputs, smid et svar begge to, så fordeler jeg lige points
08. september 2006 - 16:26
#28
Her er mit svar :-)
08. september 2006 - 16:28
#29
så venter jeg lige på erikjacobsen...hvis det tager lidt tid, er jeg først tilbage mandag
08. september 2006 - 16:34
#30
Ja, selvfølgelig. ericjakobsen kom lige med god info der. Men ha' en rigtig god weekend :-)
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"))
11. september 2006 - 08:58
#32
tak for hjælpen /cdc
Kurser inden for grundlæggende programmering