2016-07-03 3 views
0

私はGolangのPostgresデータベースへのクエリとをやっている動作していない奇妙なことIハードコード値は、例えば、このクエリはGolangクエリが正しく

db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
p.id) WHERE s.latitudes >=28.1036 AND shared = false order by id desc limit 15)t").Scan(&result) 
の作品であれば、クエリにのみ動作することです今変更

唯一の部分は、それがフォームを通って、今ここs.latitudes> =代わりにその値を持つ28.1036 は、ハードコードされたI過ぎているこの

db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
    p.id) WHERE s.latitudes>=$1 AND shared = false order by id desc limit 15)t",LatMin).Scan(&result) 

ようなクエリを有します今すぐ彼はただ、ヌル戻ってくると、これは私のコードであると私はFMTを使用していたコードから見ることができるように私は

func Auto_Location(w http.ResponseWriter, r *http.Request) { 

     var result string 
     if r.Method == "GET" { 

     } else { 
      r.ParseForm() } 

     LatMin := r.Form["LatMin"] 

    db,err := sql.Open("Postgres Connects") 
    if err != nil { 
    log.Fatal(err) 
    println(err) 

    } 
    db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
     p.id) WHERE s.latitudes>=$1 AND shared = false order by id desc limit 15)t",LatMin).Scan(&result) 
    defer db.Close() 


    w.Header().Set("Content-Type", "application/json") 


    fmt.Fprintf(w,result) 
     fmt.Println("Value:", LatMin) 

    } 

再びLatMin変数が正しく読み込まれているという事実を知っているとLatMinを持つクエリ28.1036という正しい値があります。私がここで紛失しているものがあります。使用しているpostgresパッケージは、_ "github.com/lib/pq"です。私はFloat値の問題だと思っています。LatMinを28に変更すると動作しますが、28.1036は無効です。

+0

2つのクエリ文字列を印刷して違いを確認しようとしましたか? –

+0

はい私はして、最終的に答えを見つけた – user1591668

答えて

0

こんにちは、投稿のフォーム情報を収集していて、 decimal型、floatまたはdoubleであり、あなたは、データベースにその値を照会することがcorrecte

を取得するよう、代わりに

r.Form["LatMin"] 

r.FormValue("LatMin") 

を使用

これらの方法はどちらも正しい値を得ますが、Form [""]はデータベースの問題です。

関連する問題