Top.Mail.Ru
Ответы
Аватар пользователя
11лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Mysql - совсем не сравнивает строки. Что это такое, по логике чисто если, то должно

Код:

CREATE TABLE IF NOT EXISTS `usernames`

(

`id_user` INT UNSIGNED NOT NULL AUTO_INCREMENT,

`login` VARCHAR(25) NOT NULL COMMENT 'login',

`role` VARCHAR(30) NOT NULL COMMENT 'role value',

`pass` VARCHAR(70) NOT NULL COMMENT 'passwordHash',

`id_pict` INT UNSIGNED COMMENT 'avatar of this user',

PRIMARY KEY(`id_user`)

)ENGINE = innoDB COMMENT 'usernames' CHARACTER SET=utf8 COLLATE utf8_bin;

INSERT INTO `usernames` (`login`, `pass`, `role`) VALUES ('tester', md5('123'), 'admin');

DROP PROCEDURE IF EXISTS `confirm_me`;

DELIMITER |

CREATE PROCEDURE confirm_me(IN login VARCHAR(25), IN pass VARCHAR(70), IN role VARCHAR(30))

BEGIN

SELECT CONVERT(pass USING binary) INTO @template;

SELECT md5(@template) INTO @md5temp;

SELECT * FROM `usernames` WHERE BINARY `pass` = @md5temp;

END;

|

DELIMITER ;

CALL confirm_me('tester', '123', 'admin');

#И вот в этом месте выдается empty set, хотя должен вывести строку с tester. Что-то я делаю неправильно, но что?

По дате
По рейтингу
Аватар пользователя
Новичок
11лет

а ты сам чисто по логике как считаешь где сравнение должно происходить? в какой строке?