2

我正在使用 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...
}

当我使用某种 SQL 调用此方法时,总是会收到 SQL 错误。我做类似的事情:

FindByQuery("SELECT * FROM Diver WHERE Name=?", "Markus")

这会导致以下错误:

从 MySQL 服务器收到 #1064 错误:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的 '?%!(EXTRA string=Markus)' 附近使用的正确语法”

我应该怎么做才能将参数正确转换为字符串(或其他字符串,如果我有不同的参数)?

4

1 回答 1

0

尝试使用 printf 格式语法:

FindByQuery("SELECT * FROM Diver WHERE Name=%s", "Markus")
于 2014-03-25T13:03:56.977 回答