【问题标题】:nodejs: how to escape a whole sql string instead of escaping each argument?nodejs:如何转义整个 sql 字符串而不是转义每个参数?
【发布时间】:2017-04-21 01:40:59
【问题描述】:

我使用https://github.com/mysqljs/mysql.git 库。

我有一个mysql db查询架构,由于文件太多,我无法逐个修改SQL查询文件以转义每个参数,但是所有SQL查询都会调用同一个基础mysql实例的查询方法,所以我想知道我是否可以在基本 mysql 查询方法中转义最终的 SQL 字符串。

我想像

一样转义整个 SQL 字符串
select * from tableA where name = 'foo'bar

到

select * from tableA where name = 'foo\'bar'

使用mysql_escape("select * from tableA where name = 'foo'bar'") 之类的函数,而不是使用准备查询或连接转义字符串来执行此操作。

【问题讨论】:

    标签: mysql sql node.js mysql-escape-string


    【解决方案1】:

    没有办法做到这一点,不会导致真正低效的功能或一些糟糕的黑客行为。只需使用参数化查询,这基本上就是它们的用途。如果你不能使用那些你使用 concat 字符串。

    对整个查询运行 mysql_escape 需要该函数知道哪些字符是查询的一部分以及哪些字符是输入值的一部分。您可以编写某种愚蠢的正则表达式来尝试从查询中提取值然后转义它们,但这只是一个坏主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2015-01-17
      相关资源
      最近更新 更多