mysql - 如何在执行mysql更新sql语句时同时绑定多变量和切片变量,如update .. where .. in?
问题描述
我在 golang 中有一些字符串变量和一个切片变量作为 SQL 参数,但是corresponding parameter is non-variadic
当我尝试执行时返回了错误。
那么在这种情况下如何绑定这些变量呢?
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 variadics 无法处理您要执行的操作:
args:=[]interface{}{foo,baz,bar}
for _,x:=range pars {
args=append(args,x)
}
tx.Exec(stmt,args...)
推荐阅读
- spring - 如何将 Spring Batch Metrics 发布到 Prometheus 网关
- sql - 重复用户名的新值 - SQL Server
- python - jinja2:重载模板如何加载所有变量
- javascript - 反应组件的计时器/计数器 - 使用 setInterval() 增加后值保持为 0
- java - XSL 样式表不保留编码值
- asp.net-mvc - 为什么我的 Web API 在发布到 Web API 时收到空值?不只为一个客户工作
- c++ - 我正在使用基于 arm 的拱门将数据发送到基于 x86 的拱门。在发送或接收数据之前,我是否必须编写代码来更改字节顺序?
- javascript - JS Bcrypt 到 c#
- mapbox - SnapChat 的 MapBox Snap 地图城市边界更新
- javascript - 没有这样的文件或目录 react-native/scripts/libraries