Avatar billede palle-toft Nybegynder
09. december 2008 - 15:54 Der er 12 kommentarer og
1 løsning

UPDATE virker ikke

Er helt ny i ASP og SQL så detteher er sikkert et dumt spørgsmål, men jeg kan ikke finde fejlen.

Jeg har en side, hvor brugeres data er vist og hvor de kan rette i dem. Når der skal opdateres virker SQL strengen ikke.

Koden ser sådan ud:

<!--#include file="../odbc.asp"-->
<%

response.buffer = true

VTI_GROUP = request("VTI_GROUP")
VTI_GROUP = Replace(VTI_GROUP,"'","&#39")

userid = request("userid")

email = request("email")
email = Replace(email,"'","&#39")

mobiltelefon = request("mobiltelefon")
mobiltelefon = Replace(mobiltelefon,"'","&#39")

%>

' ------------------------------------
<html>
<head>
<title>www.NSEBOP.COM</title>
</head>
<body>
<br>
<h1> <% =VTI_GROUP %> </h1>
<br>
<h1> <% =userid %> </h1>
<br>
<h1> <% =email %> </h1>

<br>
' -----------------------------
<br>
<br>

<%

'SQL = "UPDATE user SET Mobiltelefon = '" & Mobiltelefon & "', email = '" & email & "' WHERE id = " & userid & ";"

response.write(SQL)

DB.Execute(SQL)

'            Response.Redirect ("success.htm")

%>

SQL strengen ser sådan ud, når jeg bruger response.write:

UPDATE user SET email= 'pallexxx@provide.dk', mobiltelefon= '+46 76 305 11 02'WHERE id = 139

Og fejlmeddelelsen ser sådan ud:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/member/opdater.asp, line 56

Er der nogle bud på, hvad jeg gør galt???

På forhånd tak...:-)

Palle
Avatar billede fennec Nybegynder
09. december 2008 - 15:57 #1
Den sql er ikke ens med den i din kode.

Men den du udskriver mangler et space før where:
...02'WHERE...
...02' WHERE...
Avatar billede palle-toft Nybegynder
09. december 2008 - 16:28 #2
Ups...:-)

Har fjernet det lille flueben ved SQL og så ser den sådan ud:

UPDATE user SET Mobiltelefon = '+46 76 305 11 02', email = 'pallexxx@provide.dk' WHERE id = 139;
Avatar billede keysersoze Guru
09. december 2008 - 17:44 #3
først og fremmest er det en lidt uheldig løsning at du erstatter ' med &#39 - det fungerer selvfølgelig så længe vi snakker web, men hvad hvis du en dag pludselig skal benytte data i et andet miljø? Erstat i stedet med '' - dvs fx Replace(VTI_GROUP,"'","''").

I samme omgang skal du heller ikke glemme SQL injections - du tager selvfølgelig meget en del ved at tage højde for ' men der ligger lidt mere i det end det.

Det vil også være en rigtig god idé specifikt at benytte fx request.form eller request.querystring i stedet for bare request.

glem heller ikke at lukke din database-forbindelse igen efter brug - dvs inden du redirecter.

Når det så er sagt kan jeg ikke lige umiddelbart se fejlen - et par gæt kunne være, at mobiltelefon eller email ikke er tekstfelter i databasen (men mon ikke), at de er stavet forkert eller at DB eller SQL ikke findes i det øjeblik du forsøger at execute.
Avatar billede keysersoze Guru
09. december 2008 - 17:52 #4
glemte lige linket til noget om SQL injections; http://web-dev.dk/post/2008/07/SQL-injections---mere-end-bare-et-pling.aspx
Avatar billede mortvader Nybegynder
09. december 2008 - 17:58 #5
Er user ikke et reserved word?
Prøv lige

UPDATE [user] SET Mobiltelefon = '+46 76 305 11 02', email = 'pallexxx@provide.dk' WHERE id = 139;
Avatar billede fennec Nybegynder
10. december 2008 - 09:06 #6
.. Bare lige en detalje. Den fejl du får er IKKE en database fejl, men en script fejl:

Microsoft VBScript runtime error '800a01a8'
Object required: ''

Er du sikker på at du har initialiseret database forbindelsen rigtigt i din odbc.asp fil og at objektet hedder DB??
Avatar billede palle-toft Nybegynder
10. december 2008 - 09:48 #7
@fennec
Du har fuldkommen ret. Fejlen ligger her...:-) Havde glemt at kalde dbconn i stedet for DB...

Og rigtig mange gange tak for hjælpen til alle. Hvordan lukker man denne streng?

Palle
Avatar billede fennec Nybegynder
10. december 2008 - 09:59 #8
Du skal bede om et svar fra den/de brugere, som du synes skal have point for hjælpen. Også vælger du dem i boksen til venstre og trykker accepter. (nu har jeg smidt et svar)

Og velkommen til E. Du skal nok blive glad for at være medlem...

.o) <-- One Eyed Jack
Avatar billede fennec Nybegynder
10. december 2008 - 10:00 #9
Tag evt også et kik på den uofficielle FAQ:
http://expfaq.dk/
Avatar billede palle-toft Nybegynder
10. december 2008 - 13:33 #10
Jeg sidder her og bøvler med et nyt problem, som I måske også kan hjælpe med eller måske skulle man se at få sine skolepenge retur...:-):

<%             
' Denne sætning giver et rigtigt resultat...:-)             
'SQL="SELECT COUNT(use_module) AS besog FROM url_besoeg WHERE use_module='PC'"

'Denne giver den følgende fejlmeddelelse...
SQL="SELECT COUNT(*) As besog FROM url_besoeg WHERE use_module= 'PC' AND id= " & userid

response.write(SQL)

SET Data = dbconn.Execute(SQL)
%>
<br>
<br>
<%
response.write(Data("besog"))
%>

Fejlmeddelelse:

(    respons.write giver dette her: SELECT COUNT(*) As besog FROM url_besoeg WHERE use_module= 'PC' AND id= 139          )

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

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/member/index.asp, line 88
Avatar billede fennec Nybegynder
10. december 2008 - 13:48 #11
Findes der en "id" kolonne på url_besoeg tabellen?? Det er ikke sådan at den kolonne hedder userID istedet?
Avatar billede palle-toft Nybegynder
10. december 2008 - 14:04 #12
@fennex
Du er sgu genial eller også går du meget i kirke eller også har du installeret et videokamera oppe i det ene hjørne, hvor jeg sidder...:-) Eller også er du bare meget erfaren...:-)))

Tusinde tak...
Avatar billede fennec Nybegynder
10. december 2008 - 14:24 #13
Lidt genial er man vel altid, jeg har læst biblen (for sjov, men går ikke i kirke), mit syn fejler ikke noget og jeg har efterhånde haft nogle år som programør...

Så lidt af det hele passer vel :)

Men du skal nok selv komme efter det, og vi andre kan sagtens sidde fast i flere timer på en åndsvag fejl, som en kolega ser på 10 sek... Har man først set sig blind på et problem er bedste mulighed at bede andre kigge på på det.
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