我有这段代码:
require 'pg'
a = ["bla","foo","bar","test","wow"]
begin
con = PG.connect :dbname => 'base', :user => 'thatsme'
a.map do |e|
con.prepare('statement1','INSERT INTO keywords (keyword, created_at, updated_at) VALUES ($1, $2, $3)')
con.exec_params('statement1', ["#{e}", '2017-01-01 07:29:33.096192', '2017-01-01 07:29:33.096192' ])
end
这会导致一个错误,错误信息为
ERROR: syntax error at or near "statement1"
我不理解,我漏掉了什么...
con.exec_params('statement1', ["#{e}", ...
- Ilya"#{e}"
这样的东西令人担忧,看起来像是一种仪式性编程。如果你想确保e
是一个字符串,请使用e.to_s
,尽管驱动程序通常会自动进行此转换。此外,不要直接使用底层驱动程序,尝试使用一些具有抽象化程度的工具,例如 Sequel。 - tadmancon.exec_params('statement1', [e.to_s, ...
还是"#{e.so_s}", ...."
,它仍然会导致相同的错误。 - thieboe
是一个字符串,那么"#{e}"
只会分散你注意力,让你无法专注于自己想要做的事情。 - tadman