在我的控制器中,我有此方法:
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用于数据库。
#{@p3}
,但此代码看起来像是SQL输入的攻击。
您需要将@p3
变量插入分配给allparams
的SQL字符串中,例如:
@final.each do |key, value|
allparams = "insert into #{@p3} values(N'""#{key}"+"'"++",N'"+"#{value}"+"')n"
ActiveRecord::Base.connection.execute(allparams)
end