![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 14.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam nietypowy problem z procedurami składowanymi. Mianowicie: 1. Mam funkcję zaloguj, która tworzy Sesję. W sesjach jest id użytkownika, sesja i data wygaśnięcia. Data wygaśnięcia jest ustawiana na obecną plus 15 minut. Czyli jak zalogujemy się o 7:00, data wygaśnięcia będzie wynosiła 7:15. 2. Mam funkcję, która sprawdza, czy użytkownik jest zalogowany. Czyli sprowadza się to głównie do tego, żeby sprawdzić, czy obecna data jest większa, niż data wygaśnięcia. Np o 7:05 coś robimy, i sprawdzamy , czy 7:05 > 7:15. Jeżeli jest większa, sesja jest nieważna i użytkownik zostaje wylogowany. Jeżeli jest mniejsza, to znaczy że sesja nie wygasła, a data wygaśnięcia ustawia się na 7:05 + 15 min = 7:20. I tak to działa. Napisałem sobie procedurę, i nie potrafię zrozumieć, gdzie jest błąd. Wygląda ona tak:
Czy ktoś jest w stanie stwierdzić, dlaczego taka procedura nie działa. ZAWSZE zwraca 1. Zawsze. Czy ją wywołamy minutę po logowaniu, czy godzinę. Nie robi to na niej żadnego wrażenia. Gdy przeglądam tabelę po zalogowaniu, wszystkie wartości są poprawne, data wygaśnięcia ustawia się poprawnie. Gdy sprawdzę z palca: SELECT data_wygasniecia INTO @a FROM Sesje WHERE sesja='...'; SELECT UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(v_date); To dostaję odpowiedź 0. W takim razie przecież nie jest możliwe, aby ten fragment kodu (odpowiedzialny za usuwanie) został osiągnięty? Ja już pogłupiałem na czysto, nie wiem czy to ja mam jakąś pokręconą logikę czy z tym MySQLem jest coś nie tak. Z góry dzięki za odpowiedzi, Marcin ps Prosiłbym jakiegoś moderatora o przeniesienie postu do działu MySQL. Przez nieuwagę napisałem w złym dziale. ps2 W sumie to można temat usunąć, ale można też zostawić dla kogoś (chociaż temat niewiele mówi o problemie). Otóż, v_date był typem DATA, więc tam się mieścił tylko dzień w formacie 2011-12-14. Nic nie było o godzinie. Dlatego zawsze było to 1, czyli niezalogowany. Niby głupi błąd, ale łatwo się pomylić. Powinien być typ DATETIME, wtedy działa ok. Ten post edytował bzykubd 14.12.2011, 16:54:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 23:45 |