2017-03-16 59 views
1

當我想檢查HTML表單中的值是否等於數據庫中的值時(它會這樣做),它將返回false而不是true。如何在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

它顯示如果你做每個'檢查'它顯示什麼? – nateleavitt

+0

我該如何做檢查? – moe

0

使用(password_db[0]==password)返回true。

這是最好的方法。

+0

根據你說的話password_db是一個數組,密碼是一個字符串。他們是不同的類型:) – nateleavitt

+0

或者你有多個值在password_db – nateleavitt

+0

password_db [0] [0] *我不知道如何工作大聲笑 – moe

相關問題