webForumDet fria alternativet

Angående denna SQL-sats...

13 svar · 429 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1
MyConn.ExeCute("UPDATE users SET status=0,sessionid="""",tidstampel=tidstampel WHERE status=1 AND tidstampel < DateAdd(""n"",15, NOW )")

Denna kod bör sätta status=0,sessionid="" och tidstampel=tidstampel vars status=1 och tidstampel < (datum och tid plus 15 minuter).

Men när jag använder denna sats så kan man inte ens logga sig in... men vänder jag på < till ett > så funkar det... men det är ju inte så det ska se ut....
:q

QimenMedlem sedan juni 20015 009 inlägg
#2

Är inte users ett reseverat ord?
Kan man verkligen ha """"?

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#3

Qimen skrev:

Är inte users ett reseverat ord?
Kan man verkligen ha """"?

Nope... den klagar inte på att users är ett reserverat ord som den annars gör om ordet är reserverat... jo man skall kunna ha "" "", det är istället för ' '..

PalleMedlem sedan apr. 20003 174 inlägg
#4

Är trött, men detta borde la fungera bättre:

[red]MyConn.ExeCute("UPDATE users SET status=0,sessionid='""', tidstampel=tidstampel WHERE status=1 AND tidstampel < "& DateAdd("n",15,now))[/red]
QimenMedlem sedan juni 20015 009 inlägg
#5

Men du säger att det funkar om du vänder på <, varför klaga då :p :h

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#6

Palle skrev:

Är trött, men detta borde la fungera bättre:

[red]MyConn.ExeCute("UPDATE users SET status=0,sessionid='""', tidstampel=tidstampel WHERE status=1 AND tidstampel < "& DateAdd("n",15,now))[/red]

Hmm.... nope... :(

Syntaxfel (operator saknas) i frågeuttrycket 'status=1 AND tidstampel < 2003-10-02 01:50:50'.

PalleMedlem sedan apr. 20003 174 inlägg
#7

Testar med en extra fnutt på slutet då. ;)

[red]MyConn.ExeCute("UPDATE users SET status=0,sessionid='""', tidstampel=tidstampel WHERE status=1 AND tidstampel < "& DateAdd("n",15,now) &"")[/red]
Fredde MannenMedlem sedan nov. 20014 054 inlägg
#8

Fortfarande samma fel...

Syntaxfel (operator saknas) i frågeuttrycket 'status=1 AND tidstampel < 2003-10-02 01:56:07'.
/library/if_inloggad.asp, line 7

Men visst skall man kunna jämföra två datum med < , funkar ialla fall annars,.. vad är det som sviker? :q

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Om det är access, så går det att använda now() och dateadd direkt i SQL.

MyConn.ExeCute _
"UPDATE users SET status=0,sessionid='', " & _
" tidstampel=tidstampel " & _
" WHERE status=1 " & _
" AND tidstampel < DateAdd('n',15,now())"

Sen så är det bäst att använda ' för strängvärden. Det är det enda som fungerar i alla databaser. (" betyder något annat enligt sql-standarden.)

Du får fel för att datum-värdet skall anges inom # för Access och ' för de flesta andra dbms.

Om det nu inte är Access utan tex SQL server så blir syntaxen

MyConn.ExeCute _
"UPDATE users SET status=0,sessionid='', " & _
" tidstampel=tidstampel " & _
" WHERE status=1 " & _
" AND tidstampel < DateAdd(minute,15,getdate())"
PalleMedlem sedan apr. 20003 174 inlägg
#10

Jorå, det ska gå om tidstampel är av datum-typ.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#11

Tack LarsG... nu blir det ialla fall inget felmeddelande... men står fortfarande inför ett problem som inte fanns när jag körde emot MySQL...

Nåja bifogar hela dokumentetskod... :l

<!--#include virtual="/library/errcodes.asp"-->
<!--#include virtual="/library/forum-funktioner.asp"-->
<%
Session.Timeout = 900
' Logga ut alla användare som varit inaktiva förlänge!
MyConn.ExeCute("UPDATE users SET status=0,sessionid='',tidstampel=tidstampel WHERE status=1 AND tidstampel < DateAdd('n',15,now())")

Function if_loggad(usrid)
' Om usrid saknar ett värde, logga ut.
if(len(usrid) = 0) Then
	 ErrorMsg("msgcode1")
End if

' Om usrid ej har värdet 0.
if(len(usrid) <> 0) Then
	Set rs = MyConn.ExeCute("SELECT COUNT(*) as n FROM users WHERE UserID=" & usrid & " AND sessionid='" & session.sessionid & "' AND status=1")
	Set rs2 = MyConn.ExeCute("SELECT * FROM users WHERE UserID=" & usrid & " AND sessionid='" & session.sessionid & "' AND status=1")

		' Uppdatera användaren om hans sessionsid är okay och usrid finns där status=1.
		if(rs("n") > 0) Then
			' Uppdatera användaren sätt tidstampel = NU vars usrid finns och sessionsid är okay.
			MyConn.Execute("UPDATE users SET tidstampel='" & now & "' WHERE UserID=" & usrid & " AND sessionid='" & session.sessionid & "'")
			Session("ID") = rs2("UserID")
		Else
			' Visa felmeddelandet.
			ErrorMsg("msgcode3")
		End if
	rs.Close
	rs2.Close
Else
	' Visa felmeddelandet.
	ErrorMsg("msgcode3")
End if
End function

Function online_list(usrid)
	' Beta version av onlinelista... finns tillsvidare.
	Set rs = MyConn.ExeCute("SELECT * from users WHERE status=1 ORDER by nickname DESC")
	Response.Write("<strong>Online lista</strong><br />")
		Do until rs.eof
			If(rs("sessionid") = Session.SessionID) Then
				nick = "<b>" & rs("nickname") & "</b>"
			Else
				nick = "" & rs("nickname") & ""
			End if
		Response.Write("&#8226;&nbsp;" & nick & "<br />")
		rs.MoveNext
		Loop
End function

if_loggad(Session("ID"))
%>
@ndersMedlem sedan juni 200032 969 inlägg
#12

Fredde Mannen skrev:

Tack LarsG... nu blir det ialla fall inget felmeddelande... men står fortfarande inför ett problem som inte fanns när jag körde emot MySQL...

Vad?

Vad är det som inte funkar?

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#13

@nders skrev:

Fredde Mannen skrev:

Tack LarsG... nu blir det ialla fall inget felmeddelande... men står fortfarande inför ett problem som inte fanns när jag körde emot MySQL...

Vad?

Vad är det som inte funkar?

Den loggar ut alla...

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#14

Jag tror jag har löst det... genom att byta ut < till = och -15 ... vi får se om det blir som jag tänkt i slutändan.. :e

126 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)