如何为 pq 驱动程序准备一个带有动态 table 名称的 INSERT 语句
How to prepare an INSERT statement with a dynamic table name for the pq driver
如何为 pq postgres 驱动程序的准备好的 INSERT
语句使用动态 table 名称?目前我有一个测试 table 与 id SERIAL
和 values TEXT
列,这个声明失败了:
stmt, err := db.Prepare("INSERT INTO (values) VALUES();")
if err != nil {
log.Fatal(err)
}
失败了:
pq: syntax error at or near ""
如果我只能对值使用占位符而不是 table 名称,是否有办法在此处使用 Sprintf
? table 名称包含来自用户输入的 string
,虽然我可以对其进行清理,但与让 Postgres return 在准备好的语句中出错相比,它会减慢插入速度。
要替换 table 名称变量,go sql 包尚未提供标准接口 (in progress)。
您可以使用数据库驱动程序特定的引用函数,例如:QuoteIdentifier。
另请参阅 postgres parameter quoting 个示例。
如何为 pq postgres 驱动程序的准备好的 INSERT
语句使用动态 table 名称?目前我有一个测试 table 与 id SERIAL
和 values TEXT
列,这个声明失败了:
stmt, err := db.Prepare("INSERT INTO (values) VALUES();")
if err != nil {
log.Fatal(err)
}
失败了:
pq: syntax error at or near ""
如果我只能对值使用占位符而不是 table 名称,是否有办法在此处使用 Sprintf
? table 名称包含来自用户输入的 string
,虽然我可以对其进行清理,但与让 Postgres return 在准备好的语句中出错相比,它会减慢插入速度。
要替换 table 名称变量,go sql 包尚未提供标准接口 (in progress)。
您可以使用数据库驱动程序特定的引用函数,例如:QuoteIdentifier。
另请参阅 postgres parameter quoting 个示例。