【发布时间】:2020-03-21 16:16:17
【问题描述】:
我在 go 中玩其他 API,当我用这个进行 get 调用时
我只想返回 db 中对应于 alubmId=1 和 id =1 的值,或查询中的任何其他键,而不存储为变量,然后将其传递给查询,当我不提供任何查询参数我希望它返回数据库中的所有帖子
func getPhotos(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var photos []Photo
db, err = sql.Open("mysql", "root:$pwd@tcp(127.0.0.1:3306)/typicode")
if err != nil {
panic(err.Error())
}
defer db.Close()
for k, v := range r.URL.Query() {
fmt.Printf("%s: %s\n", k, v)
}
result, err := db.Query("SELECT id, albumId, Title,thumbnailUrl,url from photo")
if err != nil {
panic(err.Error())
}
defer result.Close()
for result.Next() {
var photo Photo
err := result.Scan(&photo.Id, &photo.AlbumId, &photo.Title, &photo.Url, &photo.Thumbnailurl)
if err != nil {
panic(err.Error())
}
photos = append(photos, photo)
}
json.NewEncoder(w).Encode(photos)
}
【问题讨论】:
-
“不存储为变量,然后将其传递给查询” 为什么?您还如何告诉数据库应该返回哪些行?如果不使用带有搜索条件的
WHERE或HAVING子句,您将如何过滤表记录? -
@mkopriva 我的意思是关于我们正在循环遍历 URL.Query 并获取专辑 ID 和 ID 的查询,这是在 2 次迭代中得到的,我想在一次迭代中得到它,所以我可以使用 WHERE 子句传递它们。现在我有两个变量专辑 id 和 id ,传递从循环中获得的值,将这些变量分配给它,然后传递给查询,我不想这样做