2014-05-18 2 views
0

사용자 로그인 절차가 저장 프로 시저에서 진행 중이므로 플레이어 ID를 반환해야합니다. 나는 그것을 테스트 할 때 제공되는 이름과 암호는 결과를 반환 한 정확하지만 playerID는 NULL 유지스토어드 프로 시저에서 작동하지 않는 것으로 선택하십시오.

`player_login` (
username TEXT CHARACTER SET utf8, 
txtPassword TEXT CHARACTER SET utf8, 
OUT playerID INTEGER, 
OUT result INTEGER 
) 
BEGIN 
DECLARE password TEXT DEFAULT player_hash_password(txtPassword); 
DECLARE num INTEGER DEFAULT 0; 
    SELECT PlayerID INTO playerID 
    FROM players 
    WHERE (LOWER(players.PlayerName)=LOWER(username) OR LOWER(players.PlayerEmail)=LOWER(username)) 
    AND players.PlayerPassword = password 
    LIMIT 1; 
... 

왜 PlayerID가 playerID으로 선택되지 않는 이유는 무엇입니까? PlayerID는 자동 증가 정수가 아닙니다.

답변

2

매개 변수가 MySQL 저장 프로 시저의 여러 가지 문제점 인 열 이름과 일치합니다. 다음과 같이 매개 변수에 접두어를 사용하십시오.

`player_login` (
p_username TEXT CHARACTER SET utf8, 
p_txtPassword TEXT CHARACTER SET utf8, 
OUT p_playerID INTEGER, 
OUT p_result INTEGER 
) 
BEGIN 
DECLARE p_password TEXT DEFAULT player_hash_password(p_txtPassword); 
DECLARE num INTEGER DEFAULT 0; 
    SELECT p_PlayerID = playerID 
    FROM players p 
    WHERE (LOWER(p.PlayerName)=LOWER(p_username) OR LOWER(p.PlayerEmail)=LOWER(p_username)) 
    AND p.PlayerPassword = p_password 
    LIMIT 1; 
. 
관련 문제