0

这是一个获取法语谚语的函数:

func (r *proverbRepo) SelectFrByDegree(search string) (proverbs []domain.Proverb, err error) {
    rows, err := r.Db.Query(context.Background(), `SELECT ID, proverb
        FROM proverbs_fr 
        WHERE proverb % $1
        ORDER BY proverb <-> $1 DESC LIMIT 5
    `, search)
    if err != nil {
        return
    }

    for rows.Next() {
        var prov domain.Proverb
        err = rows.Scan(&prov.ID, &prov.Literal)
        if err != nil {
            return
        }
        proverbs = append(proverbs, prov)
    }
    return
}

有时我想从每个说 proverbs_bzh 表中获取另一个谚语表。是否可以使用变量名获取不同的表?

SELECT * FROM $1

例如...

4

1 回答 1

0

这不是绑定变量的意图。它应该用于查询重用的数据输入。如果表未知,则无法解析查询并重用执行计划。因此,您的选择是替换字符串。

警告:如果表名来自外部源,请务必检查它是否是正确的标识符(提示:防止 SQL 注入)

于 2019-10-16T06:31:28.703 回答