在 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中文網其他相關文章!