我正在尝试使用 Go 中的 sql/db 包从表中获取数据。我的数据库表包含一个用户名“shaw”。有几行用户名 shaw 在附加的帖子列中有不同的帖子。我有以下代码:
开始:
func ReadData() string {
db, err := sql.Open("mysql", "user1@/my_db")
if err != nil {
fmt.Println(err)
}
defer db.Close()
var tweet string
rows, err := db.Query("select tweet from posts where username = ?", "shaw")
if err != nil {
fmt.Println(err)
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&tweet)
if err != nil {
fmt.Println(err)
}
fmt.Printf("this %s", tweet)
return tweet
}
return ""
}
显示的结果只给我表中的 1 个值,而不是与“Shaw”关联的其他值。如何获取超过 1 个结果?
根据此处的文档,似乎没有任何问题.. https://code.google.com/p/go-wiki/wiki/SQLInterface
最佳答案
因为您返回第一条推文并退出该函数,所以要返回多条推文,您必须返回一个 slice ,例如:
func ReadData() (res []string) {
db, err := sql.Open("mysql", "user1@/my_db")
if err != nil {
fmt.Println(err)
}
defer db.Close()
rows, err := db.Query("select tweet from posts where username = ?", "shaw")
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
var tweet string
for rows.Next() {
err := rows.Scan(&tweet)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("this %s", tweet)
res = append(res, tweet)
}
return
}
关于mysql - Go:如何使用 sql/db 包从 mysql 检索多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311162/