2017-08-22 8 views
0

私はすべてのユーザのデータをユーザの電子メールで返すストアドプロシージャ(MySQL)を作成しました。MySQLストアドプロシージャが予期しない値を返す

-- Change Delimiter 
DELIMITER // 
-- Create Stored Procedure 
CREATE DEFINER=`username`@`localhost` PROCEDURE GetUserByEmail( 
    IN Email VARCHAR(255) 
) 
BEGIN 

SELECT * FROM user WHERE email = Email; 

END// 
-- Change Delimiter again 
DELIMITER ; 

ただし、指定された電子メールを持つユーザーのすべてのデータを返す代わりに、すべてのユーザーテーブルが返されます。ストアドプロシージャなしで同じクエリを実行すると、指定された電子メールを持つユーザーのデータのみが返されます。ここでは、クエリは次のとおりです。

SELECT * FROM user WHERE email = '[email protected]'; 

答えて

1

That's電子メールit'sはオールウェイズ(列名は大文字小文字を区別しません)メールする=ため、このような何かにそれを変更する必要があります。

-- Change Delimiter 
DELIMITER // 
-- Create Stored Procedure 
CREATE DEFINER=`username`@`localhost` PROCEDURE GetUserByEmail( 
    IN My_email VARCHAR(255) 
) 
BEGIN 

SELECT * FROM user WHERE email = My_email; 

END// 
-- Change Delimiter again 
DELIMITER ; 
関連する問題