2016-04-05 21 views
0

etrafında deyimi bu çalıştırmak çalışıyorum eğer kullanılarak - PHP ince işe yarayacağını ancak Git bir hata alıyorum:Git - Hata sorgusu

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=?") 
} 

Ben controllers/apps.go:1095: undefined: stmt in stmt.Exec hatasını olsun.

Bunu nasıl değiştirebilirim, böylece çalışır?

Teşekkür

+0

Sayı Eğer 'if' sonra' stmt' kullanmayı deneyin, fakat onlar oluşturulan bloklar kapsamına eklenir büyük olasılıkla 'if' önce' stmt' bildirmek ve sadece. atama kullan '= '. – icza

+0

Ayrıca şunlarla ilgili: [Yalnızca bir koşul doğruysa giderken nasıl bir değişken oluşturabilirim?] (Http://stackoverflow.com/questions/35533960/how-do-i-create-a-variable-in-go- sadece-eğer-bir-koşul-is-true) – icza

+0

@icza stmt'yi tanımlamanın doğru yolu nedir? –

cevap

0

Kişisel Sorun stmt ve err değişkenler (hem if ve else.

Bu hile yapmak gerekir Koşullarınızda iç bloğuna kapsamına eklenir böylece, Short Variable Declaration kullanarak olmasıdır :

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 
+0

Bu, beklediğim gibi görünüyor - sadece nasıl yapmadım, ama şimdi sql.Stmt'de undefined: sql hatası alıyorum. –