2016-02-21 2 views
1

у меня есть таблица маркеры, состоящий иззапроса MySQL с переменными

  • user_id - маркер Ауэр
  • маркер - маркера доступа
  • end_date: Дата и время окончания срока действия лексемы

I n ПЕД сделать запрос получения маркера возвращающегося user_id и действительность токена (датой_окончания еще не пришло) код

псевдо:

select user_id end_date 
from tokens where token = @input_token 
into @user_id @end_date 

if @user_id is not none: 
    select @user_id, now() < @end_date 

select "invalid token" 

Можно ли писал без переменных?

ответ

0

Вы можете попробовать инструкцию CASE, но можете подумать о том, что вы хотите вернуть из результатов вашего запроса.

http://www.mysqltutorial.org/mysql-case-statement/

SELECT 
    (CASE WHEN user_id IS NOT NULL THEN 
     user_id 
    ELSE 
     NULL 
    END CASE) AS user_id, 
    (CASE WHEN user_id IS NOT NULL THEN 
     (now() < end_date) 
    ELSE 
     NULL 
    END CASE) AS valid_token 
FROM tokens 
WHERE token = @input_token 
0

Вы можете попробовать добавить error_message с чем-то в нем, если user_id равно нулю:

select 
    user_id, 
    now() < end_date as is_valid_date, 
    if(user_id is null, 'invalid_token', '') as error_message 
from tokens where token = @input_token; 
Смежные вопросы