MySQL stored procedure not returning correct results

后端 未结 2 975
梦谈多话
梦谈多话 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 03:04

    The problem is that your variable has the name email, the same as the column. So, email = email is basically a no-op, because it refers only to the column name.

    It is a good idea to prefix parameters with something to avoid this confusion:

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

提交回复
热议问题