选择使用MySQL显示Mysql :: Result,而不是我的值

时间:2011-05-02 23:25:40

标签: mysql ruby

我正在尝试在Ruby中创建一个简单的命令行用户身份验证系统 我使用MySQL来存储用户信息 我决定将密码存储为MD5哈希值,主要是因为它很简单 我此刻并不想做任何疯狂的事情,我只是想让它发挥作用 然而,当我在Ruby中使用select语句来拉出散列时,我可以将它与用户输入的散列进行比较,它不是以相同的32字符格式出现的!

当我使用MySQL来选择我得到的哈希时:

 SELECT password FROM users WHERE username = 'admin';
 +----------------------------------+
 | password                         |
 +----------------------------------+
 | d456c1f6fa85ed2f6a26b15139c6ddc2 |
 +----------------------------------+

当我使用Ruby时..

 con.query("SELECT password FROM users WHERE username = 'admin'")
 #<Mysql::Result:0x950b208>

我之前从未真正编程,我真的很喜欢Ruby 我一直在谷歌上搜索两天,似乎找不到任何东西 我很抱歉,如果这是一个非常简单的解决方案,但我似乎无法在任何地方找到它 我也很喜欢有关更好的方式去做这个小项目的建议!在此先感谢:)

2 个答案:

答案 0 :(得分:4)

看起来您只需要处理查询结果。 query的返回值是结果集对象:

rows = con.query("SELECT password FROM employee WHERE username = 'admin'")
rows.each do |row|
   puts row[0]
end

答案 1 :(得分:0)

尝试

rows.map(&:password) 

也应该有用。