Mysql 插入到集合中?句法

Mysql INSERT INTO SET ? syntax

await query(`INSERT INTO feedback.app_v2 SET ?`, feedback)

我将这行代码写到我的 JS 项目中,以便在相关 table.

中插入数据

我想问这个 MySql 语法是否可以安全地防止 Sql 注入? 这里的反馈是一个对象,其键与 app_v2 table 列匹配。

这是无效的 MySQL 语法。

这是有效的 MySQL 语法:

INSERT INTO feedback.app_v2 SET mycolumn = ?

是的,它不会受到 SQL 注入的影响,因为动态值仅限于查询参数。在解析查询之前,这不会与查询结合,因此参数不可能引入意外语法。


如果 NPM 包可以进行字符串替换以将 key = 'value' 语法放入查询字符串中,那不是真正的查询参数。赋值必须在查询被解析之前成为查询的一部分,但正确的查询参数只有在被解析之后才会与查询结合。

因此,您依赖 NPM 包中的代码来执行字符串替换,而没有任何导致 SQL 注入漏洞的错误。