猿问

Go SQL 语法错误

我正在尝试使用 将一行插入到 Postgres 表中database/sql。我正在运行的代码看起来像


...

res, err := db.Exec("INSERT INTO image(name) VALUES(?);", fname)

if err != nil {

    return err

}

...

fname是一个字符串。类似的东西"image-name.png"。该image表是由语句创建的


...

_, err := db.Exec("CREATE TABLE image (id SERIAL, name VARCHAR)")

...

运行该CREATE TABLE语句后,我可以跳入psql并手动运行


INSERT INTO image(name) VALUES('some-random-image.jpg');

将适当的行添加到image表中。但是,INSERT Exec上面的调用始终与pq: syntax error at or near ")".


谁能指出我在这里做错了什么?


另外,作为后续,有什么方法可以查看语句格式的结果go吗?我在想的东西像func Preview (template string, args...) string这样


Preview("INSERT INTO tbl(col) VALUES(?);", "test")

   => "INSERT INTO tbl(col) VALUES('test');"


Smart猫小萌
浏览 231回答 1
1回答

杨__羊羊

您需要在 SQL 中使用 $1, $2, ... 作为占位符值。占位符字符依赖于数据库,对于 Postgres 它们是$X.
随时随地看视频慕课网APP

相关分类

Go
我要回答