2016-07-18 5 views
1
var SelectUser, _ = Database.Prepare("SELECT $1 FROM users WHERE id=$2 LIMIT 1;") 
    var name string 
    SelectUser.QueryRow("name", 1).Scan(&name) 

としてクエリ、カラムを準備します。postgresのは、私はそのように行う場合、私はエラーを得た変数

var SelectUser, _ = Database.Prepare("SELECT name FROM users WHERE id=$1 LIMIT 1;") 
var name string 
SelectUser.QueryRow(1).Scan(&name) 

どのように変数を変数として渡すことができますか?

+1

[MySQLで問題BY GolangのORDER]の可能な重複(http://stackoverflow.com/questions/30867337/ golang-order-by-issue-with-mysql) – icza

答えて

0

Database.Prepareステートメントのエラーは無視しています。エラーをチェックすると、SQLの準備に失敗したことに気付くでしょう。それが失敗したが、すでにiczaで、ここで答えた理由:効果的

Golang ORDER BY issue with MySql

0

は、あなたは、動的クエリを通過する必要があり、クエリでフィールド名として変数を使用することはできません。

機能を作成してみてください:

CREATE OR REPLACE FUNCTION getFieldFromUserById(field_name character varying, id_user integer) 
    RETURNS SETOF character varying AS 
    $BODY$begin 
     return query execute 'SELECT '||field_name||' FROM users WHERE nart='||id_user||' LIMIT 1'; 
end 
$BODY$ 
LANGUAGE plpgsql VOLATILE 

とあなたのコード:

var SelectUser, _ = Database.Prepare("SELECT getFieldFromUserById($1,$2);") 
var name string 
SelectUser.QueryRow("name", 1).Scan(&name) 
関連する問題