微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复导致此问题的参数化 mySQL 查询中的单引号?

如何解决如何修复导致此问题的参数化 mySQL 查询中的单引号?


  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:“更新'trainingRecords' SET status = 'deleted' WHERE 'recordId' = '10000107'”

在上面的代码片段中,根据我的理解,是“ ' ”(参数化中添加的单引号)导致了问题。有什么建议可以解决这个问题吗?

解决方法

不要使用准备好的语句来注入用于过滤或更新的表名或字段。尝试使用此查询。

UPDATE trainingRecords SET status = 'deleted' WHERE recordId = ?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。