我正在尝试运行它 - 这在PHP中可以正常工作但在Go中我收到错误:
if strings.EqualFold(update_status, "live") {
stmt, err := dbmap.Prepare(
"UPDATE Apps SET version=?,deploy_status=?,status=?,live_date=? WHERE id=?")
} else {
stmt, err := dbmap.Prepare(
"UPDATE Apps SET version=?,deploy_status=?,status=? WHERE id=?")
}
我收到controllers/apps.go:1095: undefined: stmt in stmt.Exec
的错误。
如何更改此功能以便它可以使用?
由于
答案 0 :(得分:0)
您的问题是您使用的是Short Variable Declaration,因此您的stmt
和err
变量的范围限定为条件的内部块(if
和{else
{1}}。
这应该可以解决问题:
var stmt *sql.Stmt
var err error
if strings.EqualFold(update_status, "live") {
stmt, err = dbmap.Prepare(
"UPDATE Apps SET version=?,deploy_status=?,status=?,live_date=? WHERE id=?")
} else {
stmt, err = dbmap.Prepare(
"UPDATE Apps SET version=?,deploy_status=?,status=? WHERE id=?")
}
//stmt is still defined here