0
我有這樣的SQL查詢:麻煩與MySQL的功能和存在
CREATE DEFINER=`root`@`localhost` FUNCTION `user_login_fn`(username varchar(32),pass varchar(128),actual_user int) RETURNS tinyint(1)
BEGIN
declare compareResult boolean;
declare user_id int;
if (select EXISTS(SELECT * FROM `user` WHERE `username`= username and `password` = sha2(pass, 512) and `status`='A')) THEN
SELECT id_user into user_id FROM `user` WHERE `username`= username and `password` = sha2(pass, 512) and `status`='A';
SET compareResult = register_insert_fn(actual_user, 5, Concat("Login user with ID: ", user_id));
return true;
else
SELECT id_user into user_id FROM `user` WHERE `username`= username;
SET compareResult = register_insert_fn(actual_user, 5, Concat("Failed login user with ID: ", user_id));
return false;
END IF;
END
的問題是始終返回true,即使我傳遞一個空參數。 我測試選擇stament這樣的:
select EXISTS(SELECT * FROM `user` WHERE `username`= 'prueba' and `password` = sha2('123', 512) and `status`='A')
,做工精細,但在函數總是返回True或1