Ruby的新手在这里,我试图找出一些东西。我遇到过以下情况:
sql = q%{select foo from bar where var1 = :ugh and var2 = :moreugh}
现在,我可以打印变量" sql",但如果我只使用puts和#{sql},它会显示上面的符号,":ugh"。
我希望能够使用显示的符号的值而不是符号的名称来打印字符串sql。
有任何指针吗?非常感谢!
答案 0 :(得分:0)
您的示例代码已损坏,我假设您要执行单引号字符串%q{...}
这正是你得到的:一个字符串。所以那里没有符号,它只是一个字符串。类似于'...'
答案 1 :(得分:0)
我认为,假设您使用符号而不是字符串,您可以使用以下查询:
sql = "select foo from bar where var1 = 'ugh' and var2 = 'moreugh'"
因此,使用puts
或#{sql}
会为您提供正确的输出。
如果这不符合您的要求,请发表评论。
答案 2 :(得分:0)
您有两个错误。您需要使用%Q
启用插值,变量以#{:ugh}
的形式包含在字符串中。所以,你想要:
sql = %Q{select foo from bar where var1 = #{ugh} and var2 = #{moreugh}}
puts sql
但请拜托,请不要这样做,即使只是为了一个小项目。您正在为SQL注入attacj做好准备。
答案 3 :(得分:0)
你可能想要这个:
sql = "select foo from bar where var1 = '#{ugh}' and var2 = '#{moreugh}"'
其中ugh
和moreugh
是变量。但是,你应该这样做,你的系统将开放SQL注入。请改用数据库引擎中的绑定变量。