Golang sql 命名参数查询

kar*_*war 7 mysql go

我正在尝试在 golang 中使用命名参数查询,如下所示:

stmt, err := db.Prepare("insert into users(name, email) values(@name, @email)")
if err != nil {
    //error handling
}

res, err := stmt.Exec(sql.Named("name", name), sql.Named("email", email))

if err != nil {
        //error: sql: expected 0 arguments, got 2 
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:“sql:预期 0 个参数,得到 2 个”。

编写此查询的正确方法是什么?

Adr*_*ius 3

Go 需要支持各种 SQL 服务器 - 并且并非所有 SQL 服务器都支持命名参数。支持它们的服务器有各种怪癖和“陷阱”。但它们都很好地支持位置参数。

但是 mysql-driver 有一个未解决的问题: https://github.com/go-sql-driver/mysql/issues/561