[asp access] Syntax error

Pagina: 1
Acties:

  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
hallo, ik heb waarschijnlijk een probleem dat supersimpel is maar ik kom er echt niet uit.

in een pagina selecteer je een product waarbij de link een id meestuurt:

<a href="secondlife.asp?idproduct=<% = oRS1("idsecondlife") %>"> <% = oRs1("product") %>

in de volgende pagina roep ik dat id op en doe daar een sql mee:

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPathToMDB & ";"
oConn.Open strConn

idproduct = Request.Form("idproduct")

oRs1.Open "Select * from tweedehands where idsecondlife =" & idproduct , oConn


Alleen met deze sql krijg ik dus een Syntax error
alleen waarom?

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Darn.. Glazen bol is troebel geworden.......
* gorgi_19 is even een nieuwe halen..

Of je moet me de foutmelding vertellen.... ;)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'idsecondlife ='.

/secondlife.asp, line 34

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

5.15 Syntax error (missing operator) in query expression

Er is iets mis in je query; bepaalde onderdelen lijken te missen. Stel we hebben het volgende stukje code:
ASP:
1
2
3
4
5
6
7
8
9
<%
Dim Vid, Vbedrijfsnaam

Dim SQLvraag
SQLvraag = "SELECT * FROM bedrijven WHERE id=" & Vid

Set RSCompanies = Verbinding.Execute(SQLvraag)

%>

Bij deze code kan de fout optreden. Hoe pak je nu zo een fout aan? Je weet in welke regel de fout zit. Je weet verder dat er een fout in je SQL syntax zit. De enige oplossing: debuggen.

Zet de query, voordat je hem uitvoert, op het scherm. Bovenstaand levert dan op:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
<%
Dim Vid, Vbedrijfsnaam

Dim SQLvraag
SQLvraag = "SELECT * FROM bedrijven WHERE id=" & Vid
Response.Write SQLvraag
Response.End

' We commenten deze regel; deze doet even niet mee bij het debuggen.
' Set RSCompanies = Verbinding.Execute(SQLvraag)

%>

Op het scherm verschijnt nu:

SELECT * FROM bedrijven WHERE id=

En de fout blijkt hier nu duidelijk uit.

[ Voor 9% gewijzigd door gorgi_19 op 20-06-2003 13:01 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
ja maar hoe los ik dat op?

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Debuggen.. :)

Kijk eens naar de waarde van

idproduct

Kijk vervolgens eens hoe deze gevuld wordt..

Je werkt met request.Form, kijk dus worden de variabelen met post gestuurd....
Kijk dus eens tussen de <form></form> tags van het verzendende formulier naar de waarde....

En dan kom je er vanzelf wel achter waarom hij leeg is.. :)

[ Voor 105% gewijzigd door gorgi_19 op 20-06-2003 13:12 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
oke, bedankt
.form weghalen en t werkte

Tijd van werken, tijd van rusten


  • Coolhva
  • Registratie: Juni 2003
  • Laatst online: 02-08 09:32

Coolhva

Dr. Zero Trust

Het is Request.QueryString("idproduct").
met Request("idproduct") pakt hij alles.

Dat houdt in als je in je Form of in je URL idproduct heeft staan dat ie dat dan pakt.

Voor de veiligheid is het beter altijd je Request te speciferen met Querystring of Form.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Driek schreef op 20 June 2003 @ 13:26:
oke, bedankt
.form weghalen en t werkte
En ook enig idee wat het verschil nu is? Wat request doet?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
reguest.form haalt de gegevens uit de form
request uit de gewone meegestuurde gegevens

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Driek schreef op 20 juni 2003 @ 15:52:
reguest.form haalt de gegevens uit de form
request uit de gewone meegestuurde gegevens
Nope.
Request gaat het hele rijtje af, Form, ServerVariables, Cookies en Querystring.
Voor de zekerheid dus, zoals coolhva al noemde, Request.Querystring gebruiken.

Met een beetje pech krijg je anders gekke zaken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

oke, ff offtopic, maar wel belangrijk voor TS

we doen een korte quiz:

wat gebeurd er wanneer een **** in zijn adresbalk het volgende intikt: secondlife.asp?idproduct=3;drop table tweedehands

??

  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
ja dan zal de table foetsie zijn

Tijd van werken, tijd van rusten


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
ik heb nu als request:

id = Request("slid")
if id = "" then
id = Request.QueryString("slid")
end if

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Driek schreef op 20 juni 2003 @ 16:41:
ik heb nu als request:

id = Request("slid")
if id = "" then
id = Request.QueryString("slid")
end if
Wat is er mis met:
ASP:
1
2
Dim id
id = Request.Querystring("slid")

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Dim id
id = Server.HTMLEncode(Request.Querystring("slid"))

[ Voor 45% gewijzigd door Verwijderd op 20-06-2003 16:45 ]


  • Driek
  • Registratie: Maart 2002
  • Laatst online: 22:56
Verwijderd schreef op 20 juni 2003 @ 16:29:
oke, ff offtopic, maar wel belangrijk voor TS

we doen een korte quiz:

wat gebeurd er wanneer een **** in zijn adresbalk het volgende intikt: secondlife.asp?idproduct=3;drop table tweedehands

??
hoe voorkomen we dit dan?

Tijd van werken, tijd van rusten


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In het kader van mooie oplossingen...
ASP:
1
2
3
4
5
6
7
8
9
10
Dim id

id = Request.Querystring("slid")

If Not Isnumeric(id) Then

    Response.Write "Ongeldige invoer"
    Response.End

End if
Driek schreef op 20 June 2003 @ 16:46:
hoe voorkomen we dit dan?
Zoek een @ google naar SQL Injection Attacks.

Alleen ik geloof dat MS Access te stom is om gecombineerde query's te begrijpen..

[ Voor 40% gewijzigd door gorgi_19 op 20-06-2003 16:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22-08 13:14

TeeDee

CQB 241

ASP:
1
id = Cint(request.querystring("slid"))


zelf opzoeken wat Cint doet.

gorgi_19's oplossing werkt ook :)

[ Voor 24% gewijzigd door TeeDee op 20-06-2003 16:48 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

TeeDee schreef op 20 June 2003 @ 16:48:
ASP:
1
id = Cint(request.querystring("slid"))


zelf opzoeken wat Cint doet.

gorgi_19's oplossing werkt ook :)
Nadeel van jou is dat je een 500 internal server error melding krijgt.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 20 juni 2003 @ 16:47:
[...]
Alleen ik geloof dat MS Access te stom is om gecombineerde query's te begrijpen..
Das waar, maar een devver hoort altijd zijn input te checken....

Die isNaN methode van jou werkt wel, totdat je ook letters in de querystring mee stuurt en dan werkt de HTMLEncode methode nog steeds...

  • Coolhva
  • Registratie: Juni 2003
  • Laatst online: 02-08 09:32

Coolhva

Dr. Zero Trust

behalve als je On Error Resume Next erboven zet :P ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Coolhva schreef op 20 June 2003 @ 16:51:
behalve als je On Error Resume Next erboven zet :P ;)
Maar da's ranzig; blijft heerlijk met debuggen.. :X
Verwijderd schreef op 20 juni 2003 @ 16:51:
[...]


Das waar, maar een devver hoort altijd zijn input te checken....

Die isNaN methode van jou werkt wel, totdat je ook letters in de querystring mee stuurt en dan werkt de HTMLEncode methode nog steeds...
Klopt, maar z'n ID is van het type autonumber (mag ik hopen.. :X), dus letters mogen er sowieso uit...

Verder kom ik iig niet zo vaak tegen dat ik letters moet versturen via een querystring, eik..

[ Voor 57% gewijzigd door gorgi_19 op 20-06-2003 16:53 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 20 June 2003 @ 16:52:
[...]
Verder kom ik iig niet zo vaak tegen dat ik letters moet versturen via een querystring, eik..
Postcode, Zoekopdrachten, Afmetingen (1/2" :D)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 20 juni 2003 @ 16:55:
[...]


Postcode, Zoekopdrachten, Afmetingen (1/2" :D)
Hmmm... Op zich wel gelijk in.... :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1