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

使用“?”时,sql.DB.Query“预期为 0 个参数” 占位符

使用“?”时,sql.DB.Query“预期为 0 个参数” 占位符

Go
慕哥9229398 2022-06-06 17:01:09
我正在使用驱动程序database/sql与golang 中的 MySQL 数据库进行交互github.com/go-sql-driver/mysql我将标签与文章与将文章 ID 与标签 ID 相关联的表关联起来,并使用本文article_to_tag底部的 Toxi 解决方案查找具有特定标签的文章这个片段应该在我的数据库中查询与数组中所有标签关联的所有文章itags    s := "SELECT a.* " +        "FROM article_to_tag at, articles a, tags t " +        "WHERE t.ID = at.TagID " +        "AND a.ID = at.ArticleID " +        "AND (t.Name IN ('?'" + strings.Repeat(",'?'", len(itags)-1) + ")) " +        "GROUP BY a.ID " +        "HAVING COUNT(a.ID)=" + strconv.Itoa(len(itags)) + ";"    fmt.Println(s)    rows, err := db.Query(s, itags...)这会在查询 2 个标签时构建以下字符串,但使用该字符串进行查询会返回错误:sql: expected 0 arguments, got 2SELECT a.*FROM article_to_tag at, articles a, tags tWHERE t.ID = at.TagIDAND a.ID = at.ArticleIDAND (t.Name IN ('?','?'))GROUP BY a.ID HAVING COUNT(a.ID)=2;为什么查询忽略?占位符,我还应该如何安全地构建查询?
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

省略单引号。当你使用占位符时,不要加引号。加上引号,它只是一个字符串。



查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号