Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
lapaliv
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 61
1

Простое условие не работает в функции

23.07.2012, 17:10. Просмотров 789. Ответов 3
Метки нет (Все метки)

таблица:users
1) id
2) hash - 32 символьный хеш. Нужен для авторизации.
3) category (группа, к которой относится пользователь. Например admin или default и тд)

тут есть строка
4 5f4dcc3b5aa765d61d8327deb882cf99 default

и так, собственно сама функция:

SQL
1
2
3
4
5
6
7
8
DELIMITER //
 
CREATE FUNCTION privilige(USER INT,hash VARCHAR(40))
RETURNS text
BEGIN
DECLARE bla TEXT DEFAULT (SELECT `category` FROM `users` WHERE `hash`=hash AND `id`=USER);
RETURN bla;
END
По сути, это что-то вроде авторизации. Если хеш и id совпадают, то получаем название категории, в которую входит пользователь.
1)Вызываю эту функцию с параметрами: 4, 'sdfsdf'
Выдает default
2)вызываю ф-ю с параметрами: 5, 'sdfsdf'
Выдает NULL
3) Вызываю ф-ю: 4,5f4dcc3b5aa765d61d8327deb882cf99
Выдает default.

Вопрос собственно понятен..почему не работает 1 вариант.

З.Ы. без функции:
SQL
1
2
SET @bla = (SELECT `category` FROM `users` WHERE `hash`='sdfsdf' AND `id`=4);
SELECT @bla;
Работает правильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2012, 17:10
Ответы с готовыми решениями:

Условие в виде РНР функции - это возможно?
Таблица с именем grupp содержит столбец с именем adres_grupp. Требуется...

Не работает простое условие
procedure TForm1.UnknowCmd; begin Memo1.Lines.add(cmd.text); if...

Простое условие
есть <input type="checkbox" id="ch1" onchange="change1()"> и <input id="te1"...

If простое условие
нужно написать такое условие "если это категория для мальчиков эхо картинка1,...

Простое условие
Здравствуйте! Написал программу по такому заданию: (см. вложение) ...

3
Joeymax
942 / 327 / 67
Регистрация: 31.03.2012
Сообщений: 879
24.07.2012, 10:55 2
А что возвращает следующий запрос?
MySQL
1
SELECT * FROM users WHERE id=4
0
lapaliv
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 61
24.07.2012, 16:58  [ТС] 3
Joeymax, возвращает всю строку и БД

Добавлено через 1 час 44 минуты
проблема решилась. в условие вставил название таблицы
SQL
1
WHERE `users`.`id`=USER AND `users`.`hash`=hash
хотя не понятно почему. Все равно ж беру все данные из одной таблицы..
0
Аватар
298 / 219 / 8
Регистрация: 31.05.2012
Сообщений: 520
24.07.2012, 22:31 4
Имена параметров лучше не делать совпадающими с именами полей
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2012, 22:31

Простое условие в батнике
Есть идея запуска батника на серве, но подзабыл синтаксис командной строки,...

Не срабатывает простое условие
честно говоря первый раз такое вижу SELECT fio, nomer, datao, podrozd FROM new...

Составить простое условие
Здравствуйте. Мне нужно: если $name_search равен строке "+", то $name_search =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru