2017-03-16 4 views
1

HTML 폼의 값이 데이터베이스의 값과 같은지 확인하려면 true 대신 false를 반환합니다.Ruby에서 데이터베이스 (SQLite3) 값을 사용하는 방법

코드가 더 필요합니까?

코드 :

password = params[:password] 
password_db = @db.execute('SELECT password FROM dtbs WHERE username=?', [params[:username]]) 
puts password #returns llol123 
puts password_db #returns llol123 

check = (password==password_db) 
puts check #returns false 
+1

암호 문자열 앞뒤에 공백 기호가있을 수 있습니다. 즉 [llol123] 대신 [llol123] 또는 [llol123]이 있습니다. 그럴 경우이 문제가 발생할 수 있습니다. "[# {password_db}]"을 넣고 "[# {password}]"를 넣어 원하지 않는 공백이 있는지 확인하십시오. – Valdis

+0

직접 쿼리를 작성하는 대신 ORM을 사용하는 것이 좋습니다. [Sequel] (http://sequel.jeremyevans.net)이 제 권유입니다. 좋은 ORM을 사용하면 코드에 집중하고 쿼리 생성을 처리 할 수 ​​있습니다. 다른 DBM으로 변경하려면 연결 정보 만 변경하고 ORM은 나머지를 자동으로 처리합니다. –

답변

0

내가 password_db의 반환 형식을 추측하고있어 배열 또는 무언가에? 값의 유형을 얻으려고 시도하십시오.

puts password.class 
puts password_db.class 

나는 그것이 다른 것으로 추측합니다.

+0

예, 둘 다 배열입니다 – moe

+0

각각에 대해'inspect'하면 어떻게됩니까? – nateleavitt

+0

어떻게 검사합니까? – moe

0

(password_db[0]==password)을 사용하면 true를 반환합니다.

그게 최선의 방법입니다.

+0

당신이 말하는 것에 따라 password_db는 배열이고 패스워드는 문자열입니다. 그들은 다른 유형입니다 :) – nateleavitt

+0

또는 password_db에 여러 값이 있습니다 – nateleavitt

+0

password_db [0] [0] * 나는 그것이 어떻게 작동하는지 모르겠다. – moe

관련 문제