首页 > 后端开发 > Golang > 如何使用 SQLx 正确查询 MySQL 的值片段?

如何使用 SQLx 正确查询 MySQL 的值片段?

Patricia Arquette
发布: 2024-12-04 05:06:10
原创
551 人浏览过

How to Correctly Query MySQL with a Slice of Values Using SQLx?

SQLx 使用切片中的值查询 MySQL

在 MySQL 中查询表以根据切片中包含的值检索记录时,使用 SQLx 可能会出现错误。下面的文章提供了此问题的解决方案。

问题

尝试按以下方式使用 SQLx 查询表时:

var qids []int
//fill qids dynamically
err = database.SQL.Select(&quotes,
    "SELECT * FROM quote WHERE qid IN ", qids)
if err != nil {
    log.Println(err)
}
登录后复制

遇到的错误是:

sql: converting Exec argument #0's type: unsupported type []int, a slice
quotes []
登录后复制

解决方案

解决方案在于利用 In() 辅助函数由 SQLx 提供。通过利用此函数,可以通过获取参数并使用 Rebind() 来准备查询。更正后的代码为:

var qids []int

// fills qids on query dynamically
query, args, err := sqlx.In("SELECT * FROM quote WHERE qid IN (?)", qids)
if err != nil {
    log.Fatal(err)
}

// sqlx.In returns queries with the `?` bindvar, we can rebind it for our backend
//
query = database.SQL.Rebind(query)  // database.SQL should be a *sqlx.DB

err = database.SQL.Select(&quotes, query, args...)
if err != nil {
    log.Fatal(err)
}

// or just in one line:

err = database.SQL.Select(&quotes, database.SQL.Rebind(query), args...)
登录后复制

其他资源

有关此主题的进一步指导和示例,请参阅 SQLx 文档:http://jmoiron.github.io/sqlx /

以上是如何使用 SQLx 正确查询 MySQL 的值片段?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板