This is a common mistake but many people do not realize this function comes from mysql itself, so therefore you need an active mysql connection open.
Usually the string will be empty and null when you call it from outside of the database connection portion of your code.
eg. an example of the wrong way and creating a null/empty string
$var = mysql_real_escape_string($myself)
mysql_connect();
// returns null/empty
As you can see above the escape was called before we connected to the db so that's why it returns empty.
How to fix it (put the escape call after you connect to mysql):
mysql_connect();
$var = mysql_real_escape_string($myself)
There realy should be more of a warning from PHP itself because an empty string could cause havoc with database transactions.
Another way the problem can be created:
Sometimes as coders we get too smart and thank "we'll update all of our unescaped data to be escaped and mass replace all functions with sed"
sed -i s/'addslashes('/'mysql_real_escape_string('/g admin.php
A good example is the above, why does it break? Because as we showed earlier typically most coders will do the string manipulation outside of the database call section.
mysql_real_escape_string, returns, solutionthis, mysql, active, null, database, portion, eg, creating, var, mysql_connect, db, realy, php, havoc, transactions, coders, quot, ll, update, unescaped, functions, sed, addslashes, admin, typically, manipulation,