我正在尝试在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
}
我收到以下错误:“sql:期望0个参数,得到2”。
编写此查询的正确方法是什么?
答案 0 :(得分:2)
Go需要支持各种SQL服务器 - 并非所有SQL服务器都支持命名参数。支持他们的服务器通过各种怪癖和“陷阱”来做到这一点。但他们都支持位置参数。
然而,mysql驱动程序有一个未解决的问题: https://github.com/go-sql-driver/mysql/issues/561