我有一些字符串变量和一个 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/