将mysql预处理语句作为哈希数组获取

我正在努力使用rubymysql gem并准备语句.
我希望最终得到的结果与对结果的each_hash相同,但在prepares语句中也不支持.
所以我带着这可怕的烂摊子来了.

  stmt = @db.prepare("SELECT mat_id, name, qty FROM materials WHERE mat_id = ? ")

  #those 3 lines hurt my eyes
  res = stmt.execute(params[:id])
  mat_id, name, qty  =  res.bind_result(Integer, String, Integer).fetch
  @material = [mat_id: mat_id, name: name, qty: qty]

必须有一种更好的方法来获取结果并获得一组哈希值.

一个更好的mysql gem可能是一个有效的答案. ORM不是.

解决方法:

看到评论,我仍然会发布续集链接作为答案:

http://sequel.rubyforge.org/

您根本不需要使用Sequel的模型部分.实际上,这些文档有一整节专门讨论SQL迷们:

http://sequel.rubyforge.org/rdoc/files/doc/sql_rdoc.html

示例查询:

DB.fetch("SELECT * FROM albums WHERE name LIKE ?", 'A%') do |row|
  puts row[:name]
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐