2017-03-16 10 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]または[lol123]があります。これによりこの問題が発生する可能性があります。 put ["#{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

関連する問題