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