有些谷歌搜索了大约半天,我找不到任何使用pg gem(postgresql ruby gem)编写的INSERT语句样本。
我试过这个(在查看gem文档之后):
def test2
conn = PG.connect( dbname: 'db1' )
conn.prepare("statement1", 'INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)')
end
但是我收到以下错误:
pgtest.rb:19:in `prepare': ERROR: syntax error at or near "," (PG::Error)
LINE 1: INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)
^
from pgtest.rb:19:in `test2'
from pgtest.rb:25:in `<main>'
答案 0 :(得分:29)
pg
gem希望您使用带编号的占位符($1
,$2
,...)而不是位置占位符(?
):
conn = PG.connect(:dbname => 'db1')
conn.prepare('statement1', 'insert into table1 (id, name, profile) values ($1, $2, $3)')
conn.exec_prepared('statement1', [ 11, 'J.R. "Bob" Dobbs', 'Too much is always better than not enough.' ])
fine manual有这样说:
- (PGresult) prepare(stmt_name, sql[, param_types ])
[...]
PostgreSQL绑定参数在SQL查询中表示为$ 1,$ 1,$ 2等。
PostgreSQL绑定参数在SQL查询中表示为$ 1,$ 1,$ 2等。 params数组的第0个元素绑定到$ 1,第1个元素绑定到$ 2等。