【发布时间】:2011-05-27 01:21:54
【问题描述】:
我是个新手。我有一个数据库,其中有一个名为 OUTPUTS 的表,其中所有列都是整数类型。我正在尝试使用以下 ruby 脚本在 OUTPUTS 中插入一行:
require 'rubygems'
require 'sqlite3'
...
db=SQLite3::Database.new("development.sqlite3")
db.execute( "INSERT into OUTPUTS (user_id,eac,pac,vac,iac,epv,ppv,vpv) VALUES (10,@eac,@pac,@vac,@iac,@epv,@ppv,@vpv);" )
运行此脚本后,我确实得到了一个新行,并且 user_id 列中按预期包含了 10,但是即使我验证了所有变量(@eac、@pac、等)确实包含值。我的语法有什么问题?
【问题讨论】:
-
想通了。仍然不完全确定为什么上述方法不起作用,但确实如此:
-
st=db.prepare("INSERT into OUTPUTS (user_id,eac,pac,vac,iac,epv,ppv,vpv) VALUES (?,?,?,?,?,?,? ,?)")\nst.execute(10,@eac,@pac,@vac,@iac,@epv,@ppv,@vpv)
-
见下文,但基本上你不能将变量放入字符串中并在不将它们包装在 #{} 中的情况下让它们呈现——但无论如何你的解决方案更好,因为绑定几乎总是去吧。