fmt.Sprintf更新数据库



我试图连接一个字符串来更新我的数据库,但我无法捕获值与sprinf %s

if email.Event == "dropped" || email.Event == "bounce" || email.Event == "deferred" {
email.Reason = email.Reason
var reason = email.Reason
var sgID = email.SgMessageId
var teste = fmt.Sprintf("update email set erro = concat(erro,' ',%s) where id_sendgrid=%s", reason, sgID)
fmt.Println(teste)
_, err := h.DB.Exec(teste)
if err != nil {
log.Fatal("Erro ao realizar upload no email com evento ERROR")
}
fmt.Println(email.Reason, email.SgMessageId, email.Response)
}

我可以捕获id_sendgrid值,但我无法获得这部分的值——>(错误,' ' %s)

这个错误出现在我的控制台:

update email set error = concat(error,' ', ') + where id_sendgrid=14c5d75ce93

不要使用Sprintf来构建数据库查询。使用参数化查询代替:

_, err := h.DB.Exec(`update email set erro = concat(erro, ' ', $1) where id_sendgrid = $2`,
reason, sgID)

$1,$2等被Exec的附加参数自动替换。

最新更新