【发布时间】:2021-08-04 08:23:24
【问题描述】:
const {tableName,recordId,idName}= req.query;
const arrayParam=[tableName,idName,recordId];
let sqlstmt="UPDATE ? SET status = 'deleted' WHERE ? = ?"
db.query(sqlstmt,arrayParam,(err,result) => {
if(err){console.log('Error occured while fetching user information',err)
res.send(err)
}
console.log(result);
res.send(result);
});
});
错误:
sqlMessage:“您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,了解在 ''trainingRecords' SET
status= 'deleted' WHERE 'recordId' = ' 附近使用的正确语法10000107'' 在第 1 行", sqlState: '42000', 指数:0, sql: "UPDATE 'trainingRecords' SETstatus= 'deleted' WHERE 'recordId' = '10000107'"
在上面的 sn-p 中,据我了解,是“'”(参数化中添加的单引号)导致了问题。有什么建议可以解决这个问题吗?
【问题讨论】:
-
您不能准备以表名作为参数的查询。查询编译器无法编译没有表名的查询(也适用于列名)
标签: mysql node.js express prepared-statement sql-injection