Escapes 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.
This function must always (with few exceptions) be used to make data
safe before sending a query to MySQL.
Parameters
unescaped_string
The string that is to be escaped.
link_identifier
The MySQL connection. If the
link identifier is not specified, the last link opened by
mysql_connect() is assumed. If no such link is found, it
will try to create one as if mysql_connect() was called
with no arguments. If by chance no connection is found or established, an
E_WARNING level warning is generated.
Return Values
Returns the escaped string, or FALSE on error.
Examples
Example 1. Simple mysql_real_escape_string() example
<?php // Connect $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error());
// Query $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", mysql_real_escape_string($user), mysql_real_escape_string($password)); ?>
Example 2. An example SQL Injection Attack
<?php // Query database to check if there are any matching users $query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'"; mysql_query($query);
// We didn't check $_POST['password'], it could be anything the user wanted! For example: $_POST['username'] = 'aidan'; $_POST['password'] = "' OR ''='";
// This means the query sent to MySQL would be: echo $query; ?>
The query sent to MySQL:
SELECT * FROM users WHERE name='aidan' AND password='' OR ''=''
This would allow anyone to log in without a valid password.
Example 3. 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.
<?php // Quote variable to make safe function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not integer if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; }
// Connect $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error());
// Make a safe query $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s", quote_smart($_POST['username']), quote_smart($_POST['password']));
mysql_query($query); ?>
The query will now execute correctly, and SQL Injection attacks will not work.
Notes
Note:
A MySQL connection is required before using
mysql_real_escape_string() otherwise an error of
level E_WARNING is generated, and FALSE is
returned. If link_identifier isn't defined, the
last MySQL connection is used.
Note:
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.
Note:
If this function is not used to escape data, the query is vulnerable to
SQL Injection Attacks.
Note: mysql_real_escape_string() does not escape
% and _. These are wildcards in
MySQL if combined with LIKE, GRANT,
or REVOKE.
mysql real escape string php code on this is provided for your study purpose, it will guide you to know how create and design a website using php. use it to practice and train your self online
Php mysql real escape string syntax tutorial
php tutorial guide and code design are for easy learning and programming. The code practice section provided at the top is for practising of this syntax. Use the code section up to practice your php programming online. Learning php is very easy, all you need is to use the examples on this site and practice them to perfect your skills.