给出配置文件config.yml
# config.yml
folders:
tree:
top: "SELECT * FROM mytable WHERE name = 'alpha'"
bottom: "SELECT * FROM mytable WHERE name = '#{name}'"
当我执行ruby脚本时:
# myscript1.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
@db.execute(@config['folders']['tree']['top'])
正确执行db select .. 我应该如何编写我的ruby命令来运行第二个请求,将'name'作为参数传递?
# myscript2.rb
@config = YAML::load_file File.join( @rundir, 'config.yml')
....
name = "beta"
@db.execute(@config['folders']['tree']['bottom']) # need parameter ?
感谢您的帮助
答案 0 :(得分:1)
对于我熟悉的Ruby DB接口,您可以将参数传递给execute
,这些参数将被SQL转义并在?
标记的点处插入到查询中。因此,首先要将查询重写为:SELECT * FROM mytable WHERE name = ?;
。然后,您可以致电@db.execute(@config['folders']['tree']['bottom'], name)
。与Ruby字符串插值相比,这还具有确保正确转义任何不可信参数的优势。