1 回答

TA贡献1848条经验 获得超2个赞
占位符的替换是由postgres服务器完成的,不应该是Go代码或松鼠的工作来做替换。
在执行采用参数的查询时,数据库驱动程序必须执行的操作的大致概述如下所示:
使用查询字符串(占位符保持不变),将向 postgres 服务器发送请求以创建预准备语句。
parse
使用参数值和新创建的语句的标识符,发送一个请求,通过创建门户使语句准备好执行。门户(类似于游标,但不相同)表示准备执行或已部分执行的语句,并填充任何缺少的参数值。
bind
使用门户的标识符将请求发送到服务器,然后服务器执行门户的查询。
execute
请注意,上述步骤只是一个粗略的概述,实际上数据库客户端和服务器之间涉及更多的请求 - 响应周期。
就目前而言,我相信它向您显示的是请求创建的准备好的声明,尽管由于我不熟悉它,因此我无法确定。pgAdmin
parse
从理论上讲,像 这样的帮助程序库或类似的驱动程序库可以实现参数本身的替换,然后向服务器发送一个简单的查询。但是,一般来说,考虑到SQL注入的可能性,在我看来,最好将其留给postgres服务器的权威。squirrel
pgx
的工作是简单地将占位符转换为指定的格式。例如,您可以使用MySQL格式编写SQL,然后调用该方法将其转换为PostgreSQL格式。PlaceholderFormat
(?,?,...)
PlaceholderFormat(sql.Dollar)
($1,$2,...)
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报