作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
看起来很简单,但我做不到。当浏览 domain.com/post/1
时,它应该显示 id
行的数据,其值为 1
。
行 id
是整数 (int4
)。
下面的代码,这是行不通的:
package main
import "fmt"
import "github.com/go-martini/martini"
import "net/http"
import "database/sql"
import _ "github.com/lib/pq"
func SetupDB() *sql.DB {
db, err := sql.Open("postgres", "user=postgres password=apassword dbname=lesson4 sslmode=disable")
PanicIf(err)
return db
}
func PanicIf(err error) {
if err != nil {
panic(err)
}
}
func main() {
m := martini.Classic()
m.Map(SetupDB())
m.Get("/post/:idnumber", func(rw http.ResponseWriter, r *http.Request, db *sql.DB) {
rows, err := db.Query(`SELECT title, author, description FROM books WHERE id = params["idnumber"]`)
PanicIf(err)
defer rows.Close()
var title, author, description string
for rows.Next() {
err:= rows.Scan(&title, &author, &description)
PanicIf(err)
fmt.Fprintf(rw, "Title: %s\nAuthor: %s\nDescription: %s\n\n",
title, author, description)
}
})
m.Run()
}
最佳答案
部分问题是您使用字符串 params["idnumber"]
作为 SQL 查询的一部分
db.Query(`SELECT title, author, description FROM books WHERE id = params["idnumber"]`)
这将查找 id 等于 params["idnumber"]
字符串的书。
您需要做的是根据 http://golang.org/pkg/database/sql/#DB.Query 使用占位符和参数
在这种情况下,您的查询应该是
db.Query("SELECT title, author, description FROM books WHERE id=$1", params["idnumber"])
这应该可以解决我认为您遇到的问题。但是,在您实际使用您遇到的实际问题更新您的问题之前,我不会知道。
更新
undefined: params
出现的错误是因为范围内没有 params 对象。
我建议阅读马提尼如何在消除争论方面发挥作用。 https://github.com/go-martini/martini#routing
关于sql - 如何在 SQL 查询中将 URI 作为字符串附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804035/
我是一名优秀的程序员,十分优秀!