执行sql时Golang pq:语法错误

Der*_*rek 6 sql postgresql go revel

使用revel,golang 1.1.2,gorp,postgres 9.3.2heroku

以下robfig列出预订示例

func (c App) ViewPosts(page int) revel.Result {
    if page == 0 {
        page = 1
    }
    var posts []*models.Post
    size := 10
    posts = loadPosts(c.Txn.Select(models.Post{},
        `select * from posts offset ? limit ?`, (page-1)*size, size)) // error here
    return c.RenderJson(posts)
}
Run Code Online (Sandbox Code Playgroud)

不知道我为什么会这样pq: syntax error at or near "limit".我假设合并查询是错误的.为什么查询最终不会像select * from posts offset 0 limit 10我一样在postgres上运行.我搞砸了哪里?

mra*_*ron 15

我对postgres不熟悉,但我发现了这个问题.我认为你应该像在godoc中一样使用它

godoc的例子

age := 21
rows, err := db.Query("SELECT name FROM users WHERE age = $1", age)
Run Code Online (Sandbox Code Playgroud)

(将"?"替换为"$ n")

你的代码

func (c App) ViewPosts(page int) revel.Result {
if page == 0 {
    page = 1
}
var posts []*models.Post
size := 10
posts = loadPosts(c.Txn.Select(models.Post{},
    `select * from posts offset $1 limit $2`, (page-1)*size, size))
return c.RenderJson(posts)
}
Run Code Online (Sandbox Code Playgroud)