首页 >后端开发 >Golang >如何使用值切片通过 sqlx 查询 MySQL?

如何使用值切片通过 sqlx 查询 MySQL?

Barbara Streisand
Barbara Streisand原创
2024-12-01 01:17:10803浏览

How to Query MySQL with sqlx Using a Slice of Values?

使用 sqlx 和值切片查询 MySQL

查询数据库表以根据切片中包含的值检索数据时,用户可能会遇到如下所示的错误:

sql: converting Exec argument #0's type: unsupported type []int, a slice
quotes []

此错误表明查询需要特定类型输入参数,但它接收的是一个不支持的类型的切片。

为了解决此问题,sqlx 提供了一个名为 In() 的便捷辅助函数。此函数将值切片和查询字符串作为参数,并返回带有 ? 的修改后的查询。绑定变量。然后可以使用 Rebind() 方法将该查询反弹到适当的数据库后端。

以下是如何使用 In() 的示例:

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)
}

上面的代码检索值来自“quote”表,其中“qid”字段与 qids 切片中的任何值匹配。

有关进一步的参考和示例,请访问官方 sqlx 文档:http://jmoiron.github.io/sqlx/。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn