[英]go convert empty interface to string
I'm using the mymysql package and I'm trying to create a function which gets an SQL query and some parameters (as variadic empty interface): 我正在使用mymysql软件包,并且试图创建一个获取SQL查询和一些参数的函数(如可变的空接口):
func FindByQuery(statement string, params ...interface{}) (diver *DiverT, err error) {
values := make([]interface{}, len(params))
for i := range params {
values[i] = params[i]
}
// Both statements result in the same error...
row, _, execError := Db.QueryFirst(statement,values...)
row, _, execError := Db.QueryFirst(statement,params...)
// Additional code...
}
When I call this method using some kind of SQL, I always get an SQL error. 当我使用某种类型的SQL调用此方法时,总是会出现SQL错误。 I do something like:
我做类似的事情:
FindByQuery("SELECT * FROM Diver WHERE Name=?", "Markus")
Which results in the following error: 导致以下错误:
Received #1064 error from MySQL server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?%!(EXTRA string=Markus)' at line 1"
从MySQL服务器收到#1064错误:“您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中找到在第1行的'?%!(EXTRA string = Markus)'附近使用正确语法的正确语法”
What should I do that the parameter is converted correctly to a string (or whatever it is, if I have different parameter(s))? 我应该怎么做才能将参数正确转换为字符串(或者,如果我有不同的参数,则可以转换为字符串)?
尝试使用printf格式语法:
FindByQuery("SELECT * FROM Diver WHERE Name=%s", "Markus")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.