Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql postgres准备查询,列作为变量_Postgresql_Go - Fatal编程技术网

Postgresql postgres准备查询,列作为变量

Postgresql postgres准备查询,列作为变量,postgresql,go,Postgresql,Go,如果我这样做,我会出错: 运行时错误:无效内存地址或零指针取消引用 但若列不是可变的,则一切正常 var SelectUser, _ = Database.Prepare("SELECT $1 FROM users WHERE id=$2 LIMIT 1;") var name string SelectUser.QueryRow("name", 1).Scan(&name) 如何将列作为变量传递?您忽略了数据库的错误。请准备语句。如果您检查错误,您将意识到它无

如果我这样做,我会出错:

运行时错误:无效内存地址或零指针取消引用

但若列不是可变的,则一切正常

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

如何将列作为变量传递?

您忽略了
数据库的错误。请准备
语句。如果您检查错误,您将意识到它无法准备sql。其失败的原因已经在这里得到了回答:


您正在忽略
数据库的错误。请准备
语句。如果您检查错误,您将意识到它无法准备sql。其失败的原因已经在这里得到了回答:


实际上,在查询中不能使用变量作为字段名,必须经过动态查询

尝试创建一个函数:

var SelectUser, _ = Database.Prepare("SELECT name FROM users WHERE id=$1 LIMIT 1;")
var name string
SelectUser.QueryRow(1).Scan(&name)
以及您的代码:

 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 name FROM users WHERE id=$1 LIMIT 1;")
var name string
SelectUser.QueryRow(1).Scan(&name)
以及您的代码:

 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
可能的重复可能的重复