“SELECT * FROM $ 1”准备语句错误:错误:语法错误在“$ 1”或附近

时间:2018-05-10 05:06:36

标签: postgresql prepared-statement pg node-postgres

为什么会出现此错误?

 const response = await pool.query(`SELECT * FROM $1`, [table]);

我的测试用例中[table]的值为["person"]。但它始终存在错误:

error: syntax error at or near "$1"

1 个答案:

答案 0 :(得分:1)

您不能为SQL名称/标识符使用变量,至少不能使用基本驱动程序。

以下是pg-promise

的示例
const response = await db.query('SELECT * FROM $1:name', table);

或:

const response = await db.query('SELECT * FROM $1:name', [table]);

或:

const response = await db.query('SELECT * FROM ${table:name}', {table});

根据SQL Names语法和您使用的方法类型,还有更多可能的变体。