首頁 > 後端開發 > Golang > 如何使用 SQLx 正確查詢 MySQL 的值片段?

如何使用 SQLx 正確查詢 MySQL 的值片段?

Patricia Arquette
發布: 2024-12-04 05:06:10
原創
588 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板