我試圖做一個程序,它將檢查用戶是否已經登錄(他有一個會話,並檢查他的最後一個動作是否超過15分鐘)。我的過程是這樣的:這個簡短的程序有什麼問題(MySQL)
CREATE PROCEDURE `isLogged`(in p_sessid VARCHAR(32), out res INT(1))
BEGIN
DECLARE v_customer_id INT(9);
DECLARE v_date DATE;
SELECT customer_id INTO v_customer_id FROM Sessions WHERE sessid=p_sessid;
SELECT expiry_date INTO v_date FROM Sessions WHERE sessid=p_sessid;
SET res=3;
IF v_customer_id > 0 THEN
IF UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(v_date) THEN
DELETE FROM Sessions WHERE sessid=p_sessid;
SET res=1;
ELSE
UPDATE Sessions SET expiry_date=DATE_ADD(NOW(), INTERVAL 15 MINUTE) WHERE customer_id=v_customer_id;
SET res=0;
END IF;
END IF;
END
誰能告訴,爲什麼它總是返回1,什麼是指用戶不再登錄?我正在手動檢查表達式UNIX_TIMESTAMP(NOW())> UNIX_TIMESTAMP(v_date),它給了我0的迴應,所以?這是怎麼回事?
由於提前, 馬辛
在我看來,一切都很好,但它不起作用。我需要找到任何調試器,我可以在其中放置表達式,斷點,並逐步檢查變量中的值。 – marxin
你有沒有在我的答案中看到調試器鏈接? – Devart