mysql - Go:如何使用 sql/db 包从 mysql 检索多个结果

标签 mysql go

我正在尝试使用 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/

相关文章:

mysql - Phpmyadmin - Mysql 无权限

python - 添加数据库模块

Java MySQL JDBC 缓慢/轮流

go - 坚持 Go 并发

Golang Gin 处理 AJAX 请求

http - 读取缓冲区并将其重写为 Go 中的 http.Response

mysql - 针对特定模式的多对多复杂 MySQL 查询

mysql - 选择多个 id 到变量中然后在 IN 中使用它的语法是什么

go - 如何测试在 goroutine 中调用了一个函数?

pointers - 如何修改结构指针类型的接口(interface)值