2017-04-06 14 views
1

正しく戻らないための手順は以下の通りです:プロシージャが私のクエリと異なる値を返すのはなぜですか?

私は、これは単一を返し

select * from hackstart.users where `ID` = 2; 

と同じように返すことを期待し、私は

call GetUser_id(2); 

を使用して呼び出す

CREATE DEFINER=`hs`@`%` PROCEDURE `GetUser_id`(in id int) 
BEGIN 
    select * from hackstart.users where ID=id; 
END 

行。ただし、プロシージャは表全体を戻します。誰が私が間違っていたか、なぜそれが間違っているのかを指摘できますか?

+3

に問題である列名と同じ名前を有し、プレフィクスを使用してカラムからパラメータを識別することが容易であり得るということであった、と述べたように?すなわち 'in p_id int'と:' select * from hackstart.users where ID = p_id; '? –

+2

変数入力(ID)と列名 'ID'は同じ名前です。それらの1つを変更するか、最初のIDをバッククォートに入れて、データベースからの列であることを示します。あなたの現在はどこに2 = 2なのかを基本的に言っています。 – xQbert

+0

助けてくれてありがとう、mysqlが大文字と小文字を区別していないことに気付かなかった。 – artman41

答えて

2

ライアンとxQbertは問題は、パラメータが原因の場合、非感受性

関連する問題