字符串插值问题

String interpolation issue

我正在尝试将记录从数据库保存到变量 "template_for_editing"

puts "select template id to edit"
template_id_to_edit = gets.chomp
template_for_editing = $db.execute %q{
SELECT * FROM templates WHERE id = #{template_id_to_edit}
}
puts template_for_editing

我收到错误代码:

/usr/lib/ruby/vendor_ruby/sqlite3/database.rb:91:in `initialize': unrecognized token: "#" (SQLite3::SQLException)

字符串插值不适用于 %q,它适用于 ":

template_for_editing = $db.execute "SELECT * FROM templates WHERE id = #{template_id_to_edit}"

顺便说一句,像这样将未经修改的用户输入传递给 SQL 查询是灾难的处方。我是用户,我输入:

1; DROP TABLE templates

然后我放下你的 templates table。