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?还有其他方法可以做到这一点吗?
您不能对字段名称使用占位符。您必须直接构建查询,如下所示:
"SELECT `" + field + "` FROM "
Run Code Online (Sandbox Code Playgroud)
为了避免 SQL 注入,请事先确保该字段是允许字段列表的一部分。