Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[ASP] Syntaxisfout bij UPDATE

redmar
2 antwoorden
  • Ik heb een beetje een vaag probleem… ik heb een site met foto's en daar kan worden gestemd (mooi/plus of niet mooi/min).
    Daarvoor gebruik ik het volgende scriptje:

    [code:1:5973db8a64]
    <!– #include file="constanten.asp" –>
    <%
    Dim fotoid, stem, objConn, sql, rs, isql, irs, nieuw

    fotoid = Request.Querystring("foto")
    stem = Request.Querystring("stem")

    If Request.Cookies(""&fotoid;&"") = "gestemd" Then
    Response.Redirect("foto.asp?foto="&fotoid;)
    Else


    If stem = "plus" Then

    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open ""&dbc;&""
    sql = "SELECT * FROM foto WHERE id = " &fotoid;
    Set rs = objConn.Execute(sql)
    nieuw = Int(rs("plus") + 1)
    isql = "UPDATE foto SET plus = "&nieuw;&" WHERE id = " &fotoid;
    Set irs = objConn.Execute(isql)
    rs.Close
    Set rs = Nothing
    objConn.Close
    Set objConn = Nothing

    ElseIf stem = "min" Then
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open ""&dbc;&""
    sql = "SELECT * FROM foto WHERE id = " &fotoid;
    Set rs = objConn.Execute(sql)
    nieuw = Int(rs("min") + 1)
    isql = "UPDATE foto SET min = "&nieuw;&" WHERE id = " &fotoid;
    Set irs = objConn.Execute(isql)
    rs.Close
    Set rs = Nothing
    objConn.Close
    Set objConn = Nothing

    Else
    Response.Redirect("foto.asp?foto="&fotoid;)
    End If


    Response.Cookies(""&fotoid;&"") = "gestemd"
    Response.Redirect("foto.asp?foto="&fotoid;)
    End If
    %>
    [/code:1:5973db8a64]

    Lijkt mij dat het prima zou moeten werken, en dat doet het ook als je stemt op [b:5973db8a64]plus[/b:5973db8a64], maar zodra je kiest voor [b:5973db8a64]min[/b:5973db8a64] geeft mn browser de error:

    Microsoft JET Database Engine (0x80040E14)
    De instructie UPDATE bevat een syntaxisfout.
    /stem.asp, line 34

    Geen idee waardoor het komt, want voor zover ik het kan zien zijn beide sql-query's precies gelijk (afgezien van plus en min dan)… bij plus telt ie in de db er ook goed eentje bij op.. en in de access-db zijn zowel plus als min een numeriek veld.

    What's the problem and how can it be solved?

    BvD :lol:
  • In dit soort gevallen kan je altijd het best de samengestelde query naar het scherm schrijven in plaats van deze uit te voeren op de database (zo zie je of bijvoorbeeld variabelen wel gevuld zijn en zo ja, welke waarden deze bevatten). De samengestelde query kan je bovendien in geval van twijfel ook nog rechtstreeks op de database uitvoeren (copy&paste;) aangezien je daar soms betere foutmeldingen krijgt.
    Overigens wordt de foutmelding die je krijgt hoogstwaarschijnlijk veroorzaakt door de kolomnaam [b:3b272e2933]min[/b:3b272e2933]. Dat is namelijk een [i:3b272e2933]reserved word[/i:3b272e2933]. Onderstaande zal in dat geval de oplossing zijn, maar beter is het imho om een andere kolomnaam te kiezen.
    [code:1:3b272e2933]
    isql = "UPDATE foto SET [min] = " & nieuw & " WHERE id = " & fotoid
    [/code:1:3b272e2933]

    De code die je hier toont is eigenlijk behoorlijk omslachtig. Zomaar een paar tips/opmerkingen:
    [list:3b272e2933]
    [*:3b272e2933]Om het voor jezelf (en voor ons) overigens makkelijker te maken lijkt het me beter als je je code inspringt. Dat maakt het meteen een stuk leesbaarder.
    [*:3b272e2933]je haalt gegevens op die onnodig zijn, gebruik

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.