【问题标题】:ruby mysql2 equivalent of data_seek(n).fetch_hashruby mysql2 相当于 data_seek(n).fetch_hash
【发布时间】:2015-05-31 21:59:59
【问题描述】:

这个在mysql2中的等效语句是什么

result = MYSQL.query('SELECT cache_amount_with_discount_and_tax FROM t_payment WHERE organization_id = 1 AND receipt_id = '+param['receipt_id'].to_s).data_seek(3).fetch_hash

// where MYSQL is the original MYSQL client

我是 ruby​​ 的新手,但我仍在努力完善文档。

【问题讨论】:

    标签: ruby mysql2


    【解决方案1】:

    我认为mysql2 不支持data_seek,但您可以使用SQL 原生OFFSET,这更好,因为它首先限制了传输到客户端的数量。 mysql2 默认情况下将行作为哈希返回,所以这不是问题。所以...

    sql = <<-SQL
      SELECT cache_amount_with_discount_and_tax
      FROM t_payment
      WHERE organization_id = 1
        AND receipt_id = #{client.escape(param['receipt_id'])}
      LIMIT 1 OFFSET 3
    SQL
    result = client.query(sql, as: :hash, symbolize_keys: false)
    hash_row = result.first
    

    我给出的选项 (as: :hash, symbolize_keys: false) 是默认的,除非您更改了默认值,否则可以不使用;或者你可以用它们来定制你的结果(例如,使用符号列键而不是字符串)。

    另外,请注意client.escape 位。永远不要将原始用户输入输入 SQL 语句,否则Bobby Tables 可能会成为您的下一个客户。

    更好的是使用提供准备好的语句和参数绑定支持的抽象库,例如Sequel

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2020-02-16
      • 2012-10-05
      相关资源
      最近更新 更多