Postgres 无法确定 Golang 应用程序中参数 $1 的数据类型

Kur*_*lle 5 sql database postgresql go pq

我正在 Golang 中创建一个使用 pq 驱动程序使用 Postgres 的应用程序。我想创建一个可以从数据库中选择用户确定的字段的函数,但出现错误:

pq: 无法确定参数 $1 的数据类型

下面是生成此错误的代码:

var ifc interface{}

if err := conn.QueryRow("SELECT $1 FROM "+db+" WHERE uuid=$3 OR uri=$4 LIMIT 1", field, UUIDOrURI, UUIDOrURI).Scan(&ifc); err != nil {
    if err == sql.ErrNoRows {
        return http.StatusNotFound
    }

    log.Println(err)

    return http.StatusInternalServerError
}
Run Code Online (Sandbox Code Playgroud)

SELECT为什么我无法插入我想要使用的字段 $1?还有其他方法可以做到这一点吗?

lau*_*ent 2

您不能对字段名称使用占位符。您必须直接构建查询,如下所示:

"SELECT `" + field + "` FROM "
Run Code Online (Sandbox Code Playgroud)

为了避免 SQL 注入,请事先确保该字段是允许字段列表的一部分。