Avatar billede kook Nybegynder
06. juni 2003 - 18:59 Der er 28 kommentarer og
1 løsning

Problemer med UPDATE funktion

Jeg connecter til MySQL databasen via ASP, og jeg bruger samme connectionstring til at hente data fra MySQL, men af uransagelige årsager kan den ikke rette i eksisterende datafelter.

Min kode ser sådan her ud:
----------------------------------------------------
<%@ Language="VbScript"%>
<% userid = Request.QueryString("id") %>
<!--#include file="dataconn.asp"-->
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'Here I start to add the information into the database fields
    mSQL = UPDATE lt6_tilmelding SET betalt = 'Ja', WHERE id = 'userid'("
    mSQL = mSQL & "betalt)"

    mSQL = mSQL & "Values("
    mSQL = mSQL & "'" & Replace(Request.Form("betalt"),"'","''") & "')"

'It executes the SQL
Conn.Execute (mSQL)

Conn.Close
Set Conn = Nothing

Response.Redirect("logged_in.asp?section=help")
End If %>
-----------------------------------------------
Men jeg får en fejl, og den ser sådan her ud:
Microsoft VBScript compilation error '800a0401'

Expected end of statement

/teamlt/exe.asp, line 7

mSQL = UPDATE lt6_tilmelding SET betalt = 'Ja', WHERE id = 'userid'("
--------------^
---------------------------------------------

Hvad gør jeg forkert?
Avatar billede htm Nybegynder
06. juni 2003 - 19:02 #1
Mon ikke at du mangler en " foran din UPDATE

mSQL = "UPDATE lt6_tilmelding SET betalt = 'Ja', WHERE id = 'userid'("
Avatar billede htm Nybegynder
06. juni 2003 - 19:04 #2
Lægger lige et svar ;o)

Den fejl du får har ikke noget med MySQL at gør men ASP. Du kan se at du får en VBScript error
Avatar billede kook Nybegynder
06. juni 2003 - 19:05 #3
Jeg mangler ikke " foran, det prøvede jeg og det eneste jeg fik ud af det var en helt anden fejl!
Avatar billede htm Nybegynder
06. juni 2003 - 19:07 #4
Og hvad var den helt anden fejl?  Du skal have den " foran UPDATE
Avatar billede kook Nybegynder
06. juni 2003 - 19:11 #5
Fejlen jeg får nu, ser sådan her ud:
-----------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 'WHERE id = 'userid'(betalt)Values('Ja')' at line 1

/teamlt/exe.asp, line 14
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:15 #6
Du skal have et mellemrum til sidst i linien
mSQL = mSQL & "betalt)"

altså
mSQL = mSQL & "betalt) "
Avatar billede htm Nybegynder
06. juni 2003 - 19:15 #7
Dette kan du se er en MySQL relateret fejl du har en syntax error!

Da du har totalt rod i din sql-sætning er det ikke til at finde ud af hvad du i virkeligheden vil!

den rigtige syntax for update er:

UPDATE tabel SET feltnavn='value', feltnavn2='value2' WHERE id='userid'

Prøv og sæt det rigtigt sammen, på den måde!
Avatar billede kook Nybegynder
06. juni 2003 - 19:20 #8
Det her er første gang jeg forsøger mig med MySQL og ASP sammen, al begyndelse er svær.
Ret mig hvis jeg er en idiot og tager fejl, men hvis jeg kun skal opdatere et felt i en kolonne skal den så ikke se sådan her ud:

UPDATE tabel SET feltnavn='value', WHERE id='userid'

Eller er det bare mig!
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:20 #9
kook >> lyt til htm i stedet for at bruge tid på mit forslag.
Avatar billede htm Nybegynder
06. juni 2003 - 19:21 #10
Ja den skal næsten se sådan ud, du skal fjerne dit komma efter value

UPDATE tabel SET feltnavn='value' WHERE id='userid'
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:22 #11
Dit komma skal væk.
Det er kun, hvis du som i htm's ekspempel skal opdatere flere felter, at du skal adskille dem med komma.
Avatar billede kook Nybegynder
06. juni 2003 - 19:22 #12
Men henter den så userid fra QueryString'en, eller er den god fin!?
Avatar billede kook Nybegynder
06. juni 2003 - 19:24 #13
Og nu får jeg den her fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near '(betalt)Values('Ja')' at line 1

/teamlt/exe.asp, line 14
Avatar billede htm Nybegynder
06. juni 2003 - 19:25 #14
Nej det gør den ikke så skal den være noget ala

mSQL = "UPDATE tabel SET feltnavn='value' WHERE id='" & request.querystring("userid") & "'

Håber at du forstår?
Avatar billede htm Nybegynder
06. juni 2003 - 19:26 #15
Ja det ser ud til at du stadig har ged i din sql - og roder rundt i det!

Kan du ikke sige hvad det er du vil have opdateret i sql'en og med hvad, altså hvor du får værdierne fra?
Avatar billede kook Nybegynder
06. juni 2003 - 19:29 #16
Det er en database hvor der en shitload tilmeldinger til et arrangement.
Vi skal have mulighed for at ændre et felt i kolonnen "betalt", som er enten et Ja eller Nej.

Så hiver den tilmeldingens id frem og ud fra den ved den hvilken tilmelding der skal ændres i.

Gav det mening?
Avatar billede htm Nybegynder
06. juni 2003 - 19:30 #17
Hmm - ikke rigtigt ;o) - men umiddelbart ville jeg sige at det skal være ala dette

mSQL = "UPDATE lt6_tilmelding SET betalt='ja' WHERE id='" & request.querystring("userid") & "'"
Avatar billede kook Nybegynder
06. juni 2003 - 19:31 #18
Og det gør så at jeg får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 'betalt)Values('Ja')' at line 1

/teamlt/exe.asp, line 14
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:32 #19
kook >> prøv at paste din nuværende kode herind.
Avatar billede htm Nybegynder
06. juni 2003 - 19:36 #20
Ja det er en god ide ;o)

Du er opmærksom på at du skal fjerne alt hvor der nu står mSQL??

Sådan at det bliver til:

'Here I start to add the information into the database fields
mSQL = "UPDATE lt6_tilmelding SET betalt='ja' WHERE id='" & request.querystring("userid") & "'"
'It executes the SQL
Conn.Execute (mSQL)
Avatar billede kook Nybegynder
06. juni 2003 - 19:36 #21
<%@ Language="VbScript"%>
<% userid = Request.QueryString("id") %>
<!--#include file="dataconn.asp"-->
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'Here I start to add the information into the database fields
    mSQL = "UPDATE lt6_tilmelding SET betalt='Ja' WHERE id='" & request.querystring("userid") & "'"
    mSQL = mSQL & "betalt)"

    mSQL = mSQL & "Values("
    mSQL = mSQL & "'" & Replace(Request.Form("betalt"),"'","''") & "')"

'It executes the SQL
Conn.Execute (mSQL)

Conn.Close
Set Conn = Nothing

Response.Redirect("logged_in.asp?section=help")
End If %>
Avatar billede htm Nybegynder
06. juni 2003 - 19:37 #22
Prøv og lave det om som jeg foreskrev! Du skal kun have en mSQL linie!!!
Avatar billede kook Nybegynder
06. juni 2003 - 19:39 #23
Okay ... nu får jeg ikke længere fejl, men tilgengæld retter den heller ikke på informationen i databasen!
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:41 #24
Du skal rette din request.querystring("userid") i sql.
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:42 #25
Og så må du hellere lige smide koden herind igen :)
Avatar billede htm Nybegynder
06. juni 2003 - 19:44 #26
Scriptet opdaterer databasen med feltet betalt = ja hvor id er lig med userid (i querystringen)

Er du sikker på at du har skrevet noget i querystringen? eks. default.asp?userid=3 og at dette nummer findes i databasen?
Avatar billede kook Nybegynder
06. juni 2003 - 19:44 #27
Koden er nu:

<%@ Language="VbScript"%>
<% userid = Request.QueryString("id") %>
<!--#include file="dataconn.asp"-->
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'Here I start to add the information into the database fields
    mSQL = "UPDATE lt6_tilmelding SET betalt='Ja' WHERE id='" & request.querystring("userid") & "'"

'It executes the SQL
Conn.Execute (mSQL)

Conn.Close
Set Conn = Nothing

Response.Redirect("logged_in.asp?section=help")
End If %>
Avatar billede fet321 Nybegynder
06. juni 2003 - 19:47 #28
Du skal stadig rette request.querystring("userid"), så den passer til det du har stående i din querystring.

Eller også skal du skifte request.querystring("userid") ud med userid, da du jo allerede henter den værdi længere oppe i koden.
Avatar billede kook Nybegynder
06. juni 2003 - 19:50 #29
Det var lige hvad jeg manglede...
Nu virker det ... mange mange mange tak!
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
Computerworld tilbyder specialiserede kurser i database-management

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