Sha256: a68738bd7db4e91f4cfc696510193a245d08e3f61897e6855ef2cd3a22755965
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
require 'mysql2' class Mysql2::Client def xquery(sql, *args) options = if args.size > 0 and args[-1].is_a?(Hash) args.pop else {} end if args.size < 1 query(sql, options) else query(Mysql2::Client.pseudo_bind(sql, args), options) end end def self.pseudo_bind(sql, values) sql = sql.dup placeholders = [] search_pos = 0 while pos = sql.index('?', search_pos) placeholders.push(pos) search_pos = pos + 1 end values = values.flatten(1) if placeholders.length == values.flatten(1).length raise ArgumentError, "mismatch between placeholders number and values arguments" if placeholders.length != values.length while pos = placeholders.pop() rawvalue = values.pop() if rawvalue.is_a?(Array) sql[pos] = rawvalue.map{|v| quote(v) }.join(",") else sql[pos] = quote(rawvalue) end end sql end private def self.quote(rawvalue) if rawvalue.nil? 'NULL' elsif rawvalue == true 'TRUE' elsif rawvalue == false 'FALSE' elsif rawvalue.respond_to?(:strftime) "'" + rawvalue.strftime('%Y-%m-%d %H:%M:%S') + "'" else "'" + Mysql2::Client.escape(rawvalue.to_s) + "'" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mysql2-cs-bind-0.0.7 | lib/mysql2-cs-bind.rb |