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. Что-то я делаю неправильно, но что?