MySQL stored procedure not returning correct results

后端 未结 2 966
梦谈多话
梦谈多话 2020-12-12 02:18

I have a stored procedure that checks if a user exists already, regardless of the input used for the email it comes back with the first line in the database. If I run the se

2条回答
  •  轮回少年
    2020-12-12 02:45

    Your problem no doubt lies here:

    SELECT `User ID` INTO User_ID FROM `Users` WHERE `Email` = Email LIMIT 1;
    

    To whit; your parameter name is the same as your column name. That can actually work, but the rules to make it do so can be weird. (I think if you switched the quotes around, it might work).

    But really, what you should do is rename the Email parameter to something else:

    CREATE DEFINER=`myusername`@`localhost` PROCEDURE `User_Auth`(IN `EmailAddress` VARCHAR(30))
    BEGIN
        DECLARE User_ID INT(30);
            SELECT `User ID` INTO User_ID FROM `Users` WHERE `Email` = EmailAddress  LIMIT 1;
    
        IF (User_ID > 0) THEN
            SELECT * FROM `Users` WHERE `User ID` = User_ID;
        ELSE
            SELECT concat('No Users Found: ', Customer_Name);
        END IF;
    END
    

提交回复
热议问题