mysql - go中执行update .. where .. in等mysql update sql语句时如何同时绑定(bind)多变量和 slice 变量?

标签 mysql sql go

我有一些字符串变量和一个 slice 变量作为 golang 中的 SQL 参数,但是当我尝试执行时,出现错误 corresponding parameter is non-variadic 返回。
那么在这种情况下我该如何绑定(bind)这些变量呢?

mysql 连接器:go-sql-driver/mysql
假代码:

func UpdateTblNm (foo, baz string, bar int, pars []string) error {
    stmt:= `update tbl_nm set foo=?, bar=? where baz=? and par in (?`+ strings.Repeat(", ?", len(pars)-1) + `)`
    if _, err := tx.Exec(stmt, foo, bar, baz, pars...); err!=nil {
        return err
    }
    ... ...
}

我是 gopher 的新人..
希望您的帮助,谢谢

最佳答案

由于你有固定数量的参数和一个可变参数,你必须将它们全部收集到一个数组中,并传递它们,因为 go 可变参数无法处理你想要做的事情:

args:=[]interface{}{foo,baz,bar}
for _,x:=range pars {
  args=append(args,x)
}
tx.Exec(stmt,args...)

关于mysql - go中执行update .. where .. in等mysql update sql语句时如何同时绑定(bind)多变量和 slice 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289676/

相关文章:

MySQL:使用条件连接改进查询

windows - 在 Go 中执行一个 vbscript

php - 如何在 php 中显示所有行

sql - 如何使用外键从其他表中获取列?

c# - 如何在asp.net中动态生成HTML和CSS?

go - Paho MQTT Golang 协议(protocol)

string - 如何在golang中椭圆截断文本?

java - Java中使用SQL删除记录

mysql - 从其他表更新表

PHP cookie 不是在 ajax 处理脚本中创建的