为了账号安全,请及时绑定邮箱和手机立即绑定

GO 中的 sql 查询问题

GO 中的 sql 查询问题

Go
函数式编程 2021-11-01 16:03:52
我有一个非常简单的 mysql 表,有 3 列,A、B 和 C。A 和 B 是键。我有一个 GO 应用程序,我正在尝试从数据库中检索数据。使用其他查询就像一种魅力,但使用这个查询则不然:aParam := "aValue"bParam := "3,4,6,9"stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( ? )")defer stmt.Close()rows, err := stmt.Query(aParam, bParam)for rows.Next() {...}如果我更换第二个?对于价值观,它完美无缺:stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( 3,4,6,9 )")我也试过这个(它不起作用):stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( " + bParam +" )")任何的想法?
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

问题是单个?没有扩展到SELECT语句中(如字符串替换),而是作为单个字符串值3,4,5,6


您需要IN像这样扩展子句的每个值:


params := []interface{} { "aValue", 3, 4, 6, 9 }

stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( ?, ?, ?, ? )")

defer stmt.Close()

rows, err := stmt.Query(params...)

为了让你的生活更轻松,你可以使用像sqlx这样的包,它对参数化IN查询有更好的支持


查看完整回答
反对 回复 2021-11-01
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信