我使用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'")
之类的函数,而不是使用准备查询或联合转义字符串来执行此操作。
答案 0 :(得分:1)
没有办法做到这一点,不会导致真正低效的功能或一些糟糕的黑客攻击。只需使用参数化查询,它基本上就是它们的用途。如果你不能使用那些你使用concat字符串。
在整个查询中运行mysql_escape将要求函数知道查询的哪些字符以及哪些字符是输入值的一部分。您可以编写某种愚蠢的正则表达式来尝试从查询中提取值然后将它们转义但它只是一个坏主意。