Go语言 fmt.Sprintf更新数据库

mnemlml8  于 2022-12-28  发布在  Go
关注(0)|答案(1)|浏览(123)

我尝试连接字符串以更新数据库,但无法捕获值 使用sprint %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)
这个错误出现在我的控制台:
更新电子邮件集错误= concat(错误,' ',)+其中id_sendgrid= 14 c5 d 75 ce 93

2w3rbyxf

2w3rbyxf1#

不要使用Sprintf生成数据库查询。请改用参数化查询:

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

$1$2等将自动替换为Exec的其他参数。

相关问题