我想使用字符串作为查询的一部分。
func GetAll(id int) {
var queryPart string
if id != 0 {
queryPart = fmt.Sprintf("WHERE id = %d", id)
} else {
queryPart = ""
}
database.DB.Query("SELECT name FROM table ?, queryPart)
}
在 database.DB 中我有 *db.Sql 实例。
如何让它发挥作用?使用该代码,我仍然得到“您的 SQL 语法有错误”。
最佳答案
您可以逐步构建查询,仅在需要时添加参数。
// Build a query (columns and table being strings)
q := fmt.Sprintf("SELECT %s FROM %s", columns, table)
args := []interface{}{}
// Add conditional query/args
if id != 0 {
q = fmt.Sprintf("%s WHERE id=?",q)
args = append(args,id)
}
// Perform the query
database.DB.Query(q,args...)
如果您发现自己做了很多这样的事情,请考虑编写一个小型查询生成器,它可以让您轻松地构建 sql 查询,而不用大惊小怪。它可以相对简单,带有用于选择、连接等的插槽和用于 args 的数组。
关于Golang 查询字符串作为查询的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033689/