如何在SQL查询中执行表名的动态分配?

时间:2019-05-27 15:27:41

标签: sql node.js express

在express js应用程序中,可以动态分配表名吗?

代码如下

let table_name = 'fields'

await connection.query(`INSERT INTO ? (name,description) values ('user','user field')`);

这会导致sql语法错误,因为执行的查询像这样的表名前后都有引号。

INSERT INTO 'fields' (name,description) values ('user','user field');

1 个答案:

答案 0 :(得分:0)

表名和列名不能被参数化,原因类似,您不能用编程语言来参数化变量名。它们是程序固定结构的一部分。如果允许对表名和列名进行参数化,那么当您事先知道输入和输出数据的结构时,可能会进行一些优化

您唯一可以做的就是使用串联将SQL构造为字符串,然后以这种方式执行它。这样做时要格外小心;不允许潜在敌对用户提供您连接到字符串中的任何值,而无需先检查其有效性