webForumDet fria alternativet

Update problem, simpelt

9 svar · 432 visningar · startad av jns

jnsMedlem sedan dec. 2001132 inlägg
#1

Antagligen är det ett väldigt enkelt fel, men hur mycket jag än
söker lyckas jag inte hitta nått.
felkod:

Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/admin/users.asp, line 20

Kod:

<%
if request.querystring("funk") = "bytpass" THEN

nypass = request.form("newpass")
prevpass = request.form("prevpass")
updatera = "UPDATE login SET Password = " & nypass & " WHERE Password = " & prevpass & " AND ID = " & loginID

set mincon =Server.CreateObject("ADODB.Connection")
set rs = server.createobject("ADODB.Recordset")
mincon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\jeha\ukm\db\main.mdb")

Set rs = mincon.Execute(updatera)

If rs.EOF Then

rs.Close
Set rs = Nothing
mincon.Close
Set mincon = Nothing

	Session("username") = ""
	Session("password") = ""
	Session.Abandon
	
	Response.Redirect("login.asp?status=denied")

ELSE

Session("username") = loginnamn
Session("password") = newpass
response.redirect("huvud.asp")

end if
end if
%>

Rad 20 är alltså: Set rs = mincon.Execute(updatera)

Tack på förhand

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Byt namn på kolumnenn password.

Lägg till apostrofer

nypass = "'" & replace(request.form("newpass"),"'","''") & "'"
prevpass = "'" & replace(request.form("prevpass"),"'","''") & "'"
updatera = "UPDATE login SET assword = " & nypass & " WHERE assword = " & prevpass & " AND ID = " & loginID
jnsMedlem sedan dec. 2001132 inlägg
#3

varför måste man göra så?

Funkar fortfarande ej...

nypass = "'" & replace(request.form("newpass"),"'","''") & "'"
prevpass = "'" & replace(request.form("prevpass"),"'","''") & "'"
updatera = "UPDATE login SET Password = " & nypass & " WHERE Password = " & prevpass & " AND ID = " & loginID

och samma felmeddelande

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Repeat after me once more

Byt namn på kolumnen password.

jnsMedlem sedan dec. 2001132 inlägg
#5

ok, funkar bättre, posten läggs in men jag har visst klantat mig på ett till ställe:

ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
admin/users.asp, line 21

Kod

<%
if request.querystring("funk") = "bytpass" THEN

nypass = "'" & replace(request.form("newpass"),"'","''") & "'"
prevpass = "'" & replace(request.form("prevpass"),"'","''") & "'"
updatera = "UPDATE login SET pwd = " & nypass & " WHERE pwd = " & prevpass & " AND ID = " & loginID

set mincon =Server.CreateObject("ADODB.Connection")
set rs = server.createobject("ADODB.Recordset")
mincon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db\main.mdb")

Set rs = mincon.Execute(updatera)

If rs.EOF Then

mincon.Close
Set mincon = Nothing
rs.Close
Set rs = Nothing

Session("username") = ""
Session("password") = ""
Session.Abandon
	
Response.Redirect("login.asp?status=denied")

ELSE

Session("username") = loginnamn
Session("password") = newpass
response.redirect("huvud.asp")

end if
end if
%>

rad 21 är If rs.EOF Then

LarsGMedlem sedan dec. 200012 464 inlägg
#6

En update returnerar aldrig någon post så det finns ingen anledning att använda ett recordset.


    mincon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db\main.mdb")
    mincon.Execute updatera,affectedRows,128

    mincon.Close
    Set mincon = Nothing
    If  affectedRows = 0 Then
        Session("username") = ""
        Session("password") = ""
        Session.Abandon
        Response.Redirect "login.asp?status=denied"
    ELSE
        Session("username") = loginnamn
        Session("password") = newpass
        response.redirect "huvud.asp"
    end if
end if
@ndersMedlem sedan juni 200032 969 inlägg
#7

En updatefråga genererar inget svar, så det är onödigt att skapa ett recordset. Jag vet inte riktigt vad du försöker göra med koden, men kanske är det det här du menar?

<%
if request.querystring("funk") = "bytpass" THEN
nypass = "'" & replace(request.form("newpass"),"'","''") & "'"
prevpass = "'" & replace(request.form("prevpass"),"'","''") & "'"
updatera = "UPDATE login SET pwd = " & nypass & " WHERE pwd = " & prevpass & " AND ID = " & loginID

set mincon =Server.CreateObject("ADODB.Connection")
mincon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db\main.mdb")
mincon.execute updatera,rowsaffected,128

mincon.Close
Set mincon = Nothing

if rowsaffected = 0 then
	Session("username") = ""
	Session("password") = ""
	Session.Abandon
	Response.Redirect("login.asp?status=denied")
ELSE
	Session("username") = loginnamn
	Session("password") = newpass
	response.redirect("huvud.asp")
end if
end if
%>

mvh

jnsMedlem sedan dec. 2001132 inlägg
#8

ok, kände inte till rowsaffect, men nu vet jag.
Tack iallafall!

HolmstroemMedlem sedan feb. 200532 inlägg
#9
<%
if request.querystring("funk") = "bytpass" THEN
nypass = "'" & replace(request.form("newpass"),"'","''") & "'"
prevpass = "'" & replace(request.form("prevpass"),"'","''") & "'"
updatera = "UPDATE login SET pwd = " & nypass & " WHERE pwd = " & prevpass & " AND ID = " & loginID

set mincon =Server.CreateObject("ADODB.Connection")
mincon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db\main.mdb")
mincon.execute updatera,rowsaffected,128

mincon.Close
Set mincon = Nothing

if rowsaffected = 0 then
	[B]Session("username") = ""
	Session("password") = ""[/B]
	Session.Abandon
	Response.Redirect("login.asp?status=denied")
ELSE
	Session("username") = loginnamn
	Session("password") = newpass
	response.redirect("huvud.asp")
end if
end if
%>

Är inte den tjocka texten onödig? :P

@ndersMedlem sedan juni 200032 969 inlägg
#10

Holmstroem skrev:

Är inte den tjocka texten onödig? :P

Jo, egentligen. Vad menar du för övrigt med din :P-smiley?

134 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)