在rails上使用ruby执行SQL命令时遇到问题

时间:2018-04-28 13:28:57

标签: ruby-on-rails ruby ruby-on-rails-5

在我的控制器中,我有这个方法:

def show
    @final =final_params
    allparams=''
    ActiveRecord::Base.connection.execute("USE database")
    ActiveRecord::Base.connection.execute("declare @p3 dbo.Params")
    @final.each do |key, value|
      allparams= "insert into @p3 values(N'""#{key}"+"'"++",N'"+"#{value}"+"')\n"
      ActiveRecord::Base.connection.execute(allparams)
    end
  end

但是,我面临以下错误:

TinyTds::Error: Must declare the table variable "@p3".: insert into @p3 values(N'a',N'aa')

在上面的代码中,@p3是一个表名参数。

我正在使用SQL Server作为数据库。

2 个答案:

答案 0 :(得分:1)

#{@p3},但此代码看起来容易受到SQL注入攻击。

答案 1 :(得分:0)

您需要将5 15 1 6 23 8 10 14 11 0 12 24 3 7 16 4 20 25 9 22 2 19 17 18 21 13 变量插入到分配给@p3的sql字符串中,如下所示:

allparams