我正在使用 mymysql 包,我正在尝试创建一个函数来获取 SQL 查询和一些参数(作为可变空接口(interface)):
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...
}
当我使用某种 SQL 调用此方法时,我总是会收到 SQL 错误。我做类似的事情:
FindByQuery("SELECT * FROM Diver WHERE Name=?", "Markus")
这会导致以下错误:
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"
我应该怎么做才能将参数正确转换为字符串(如果我有不同的参数,则为其他字符串)?
最佳答案
尝试使用 printf 格式语法:
FindByQuery("SELECT * FROM Diver WHERE Name=%s", "Markus")
关于mysql - 将空接口(interface)转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249518/