0

我使用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'")而不是使用准备查询或连接转义字符串来执行此操作。

4

1 回答 1

1

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

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

于 2017-04-21T02:02:55.847 回答