mysql - 将空接口(interface)转换为字符串

标签 mysql go type-conversion

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

相关文章:

php - Zend DB fetchAll() 无法处理值超过 926 的 "id"列

go - 如何创建在responseWriter.Write 上返回错误的http.ResponseWriter 模拟实例?

string - Golang 数字的字母表示

golang中使用utf-8符号的请求长度的字符串前缀

function - 值接收器与指针接收器

swift - float 转换崩溃

c++ - 使用 avr-gcc : uint8_t vs. uint16_t 隐式转换为 float

java - hibernate.cfg.xml 中的 Hibernate connection.url - 处理多个参数

mysql - Magento:如何调试 "admin"?

mysql - 从同一个表中获取数据