2017-10-08 148 views
0

我想在golang使用命名参数查询,如下所示:Golang SQL命名的参数查询

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

? 无论如何,命名参数通常这样写: ...值(:名称,:电子邮件)“) @variable - 它的变量,而不是命名参数 –

+0

github.com/go-sql-driver/mysql – kargirwar

+0

使用:name,:email给出SQL语法错误 – kargirwar

回答

0

Go需要支持每一种SQL服务器 - 而不是所有的SQL服务器都支持命名参数。支持他们的服务器通过各种各样的怪癖和“陷阱”来做到这一点。但他们都支持位置参数就好了。

然而,有一个开放的问题,因为它为MySQL驱动程序:什么是图书馆您使用的用来访问MySQL https://github.com/go-sql-driver/mysql/issues/561