mysql_real_escape_string
Escapes special characters in a string for use in a SQL statement
Descriptionstringmysql_real_escape_stringstringunescaped_stringresourcelink_identifierunescaped_stringThe string to escapelink_identifier (optional)The mysql connection resource
This function will escape special characters in the
unescaped_string, taking into account the current
character set of the connection so that it is safe to place it in a
mysql_query. If binary data is to be inserted, this function
must be used.
mysql_real_escape_string calls MySQL's library function
mysql_escape_string, which prepends backslashes to the following characters:
NULL, \x00, \n,
\r, \, ',
" and \x1a.
Simple mysql_real_escape_string example
]]>
This function must always (with few exceptions) be used to make data
safe before sending a query to MySQL.
If magic_quotes_gpc is enabled,
first apply stripslashes to the data. Using this function
on data which has already been escaped will escape the data twice.
If this function is not used to escape data, the query is vulnerable to
SQL Injection Attacks.
An example SQL Injection Attack
]]>
The query sent to MySQL:
This would allow anyone to log in without a valid password.
A "Best Practice" query
Using mysql_real_escape_string around each variable
prevents SQL Injection. This example demonstrates the "best practice"
method for querying a database, independent of the
Magic Quotes setting.
]]>
The query will now execute correctly, and SQL Injection attacks will not work.
mysql_real_escape_string does not escape
% and _. These are wildcards in
MySQL if combined with LIKE, GRANT,
or REVOKE.
See also
mysql_client_encoding,
addslashes,
stripslashes,
the magic_quotes_gpc,
and the
magic_quotes_runtime
directive.