From: Masatoshi SEKI Date: 2001-06-10T15:04:32+09:00 Subject: [ruby-talk:16381] Re: [ANN] Ruby/DBI 0.0.5 Hi! Sorry, I forgot a quoter.quote(). > --- sql.rb Thu May 31 22:26:59 2001 > +++ /usr/local/lib/ruby/site_ruby/1.6/dbi/sql.rb Sun Jun 10 04:00:38 2001 > @@ -38,16 +38,24 @@ > module BasicBind > > def bind(quoter, sql, args) > - boundsql = sql.dup > - boundsql.gsub! (/\?\?/, "\001") > - args.each { |arg| > - if ! boundsql.sub! (/\?/, quoter.quote(arg)) > - raise "Too many SQL parameters" > - end > - } > - raise "Not enough SQL parameters" if boundsql =~ /\?/ > - boundsql.gsub!(/\001/, "?") > - boundsql > + boundsql = sql.gsub(/\?\?/, "\001") > + > + ary = boundsql.split('?') > + case ary.size <=> args.size + 1 > + when -1 > + raise "Not enough SQL parameters" if args.empty? > + when 1 > + raise "Too many SQL parameters" unless args.empty? > + end > + > + boundsql = '' > + args.each do |arg| > + boundsql.concat(ary.shift) > + boundsql.concat(arg) boundsql.concat(quoter.quote(arg)) > + end > + boundsql.concat(ary.shift) > + > + boundsql.gsub(/\001/, "?") > end