How to escape a whole sql string instead of escaping each argument?

Issue

I use https://github.com/mysqljs/mysql.git library.

I have a mysql db query architecture in which I can not modify the SQL query file one by one to escape each argument for there are too many files, but all the SQL queries will call the query method of a same base mysql instance, so I wonder if I can escape the eventual SQL string in the base mysql query method.

I want to escape the whole SQL string like

select * from tableA where name = 'foo'bar

to

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

with some function like mysql_escape("select * from tableA where name = 'foo'bar'") instead of doing this using preparing queries or concating escaped strings.

Solution

There isn’t a way to do this that wont result in a really inefficient function or some bad hack. Just use parameterized queries, Its basically what they are there for. If you cant use those you use concat strings.

Running mysql_escape on a whole query will require the function to know what characters are part of your query and what characters are part of the input values. You could write some kind of stupid regex to try pull the values from the query and then escape them but its just a bad idea.

Answered By – Nick

Answer Checked By – Jay B. (AngularFixing Admin)

Leave a Reply

Your email address will not be published.