Unlike MySQL, SQLite follows the quoting standards in SQL strictly and does not understand the backslash \
as an escape character. SQLite only understands escaping a single quote with another single quote.
For example, if you receive the input data 'cheeky ' string'
and use the PHP function addslahes() to escape literal characters in the string then you will get 'cheeky \' string'
which according to SQLite is not escaped properly. You need to escape the string so that it looks like 'cheeky '' string'
.
If you have magic_quotes
turned on then you are in even more trouble. This PHP setting escapes all HTTP variables received by PHP with an equivalent of addslshes()
. So the correct way to escape strings in SQLite would be:
function sqlite_quote_string($str) { if (get_magic_quotes_gpc()) { $str = stripslashes($str); } return sqlite_escape_string($str); }This will remove the escape characters added by the
magic_quotes
setting, and escape strings with SQLites sqlite_escape_string()
function which correctly escapes the string with '
.
2 comments:
thank you, thank you, thank you
Post a Comment