【发布时间】:2018-02-22 23:28:09
【问题描述】:
我想在 GoLang 中创建动态 sql,但我似乎找不到正确的方法。
基本上,我只想做:
query := "SELECT id, email, something FROM User"
var paramValues []string
filterString := ""
if userParams.Name != "" {
paramString += " WHERE id = ?"
paramValues = append(paramValues, userParams.Name)
}
if userParams.UserID != "" {
if len(paramString) > 0 {
paramString += " AND"
} else {
paramString += " WHERE"
}
paramString += " email = ?"
paramValues = append(paramValues, userParams.UserID)
}
stmtOut, err := db.Prepare(query + paramString)
err = stmtOut.QueryRow(paramValues).Scan(&id, &email, &something)
与building a dynamic query in mysql and golang相关
我一直无法找到一种不允许 sql 注入的可靠方法。我上述解决方案的问题是 QueryRow() 没有将 []string 作为参数。
我想防止 SQL 注入,所以 fmt.Sprintf 并不能真正解决问题。
这样我可以允许使用 ID 或电子邮件搜索用户,并且我还将将此逻辑用于具有更多可搜索字段的不同对象。
我正在使用 go-sql-driver/mysql
【问题讨论】:
标签: mysql sql google-app-engine go dynamic