mysql_real_escape_string
  (PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string — Экранирует специальные символы в строках для использования в выражениях SQL
  
 
  Описание
  
   string mysql_real_escape_string
    ( string $unescaped_string
   [, resource $link_identifier
  ] )
  
  
   mysql_real_escape_string() вызывает библиотечную функцмю MySQL
   mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам:
   \x00, \n,
   \r, \, ',
   " и \x1a.
  
  
   Эта функция должна всегда (за несколькими исключениями) использоваться для того, 
   чтобы обезопасить данные, вставляемые в запрос перед отправкой его в MySQL.
  
  
 
  Список параметров
  
   
    - 
     unescaped_string
     
 - 
      
       Экранируемая строка.
      
      
    
    - 
link_identifier
 - 
Соединение MySQL. Если идентификатор соединения не был указан,
используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено,
функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров.
Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING.
 
   
  
  
 
  Возвращаемые значения
  
   Возвращает строку, в которой экранированы все необходимые символы, 
   или FALSE в случае ошибки.
  
  
 
  Примеры
  
   
    Пример #1 Простой пример использования mysql_real_escape_string()
    
<?php
// Соединение
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());
// Запрос
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>
     
    
  
  
   
    Пример #2 Пример взлома с использованием SQL-инъекции
    
<?php
// Мы не никак проверили переменную $_POST['password'],
// а она может содержать совсем не то, что мы ожидали. Например:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";
// посылаем запрос, чтобы проверить имя и пароль пользователя
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);
// посмотрим, какой запрос будет отправлен в MySQL:
echo $query;
?>
     
     
      Запрос, который будет отправлен в MySQL:
     
 
    
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
 
     
    
     Это позволит кому угодно войти в систему без пароля.
    
 
    
  
  
 
  Примечания
  Замечание: 
   
    Функцию mysql_real_escape_string() можно использовать 
    только после того, как установлено соединение с MySQL. В противном 
    случае возникнет ошибка уровня E_WARNING, а функция
    возвратит FALSE. Если link_identifier не указан,
    используется последнее открытое соединение.
   
  
  Замечание: 
   
    Если magic_quotes_gpc включены,
    то сначала данные следует обработать функцией stripslashes(). 
    Если данную функцию применить к уже проэкранированным данным,
    то данные будут проэкранированы дважды.
   
  
  Замечание: 
   
    Если не пользоваться этой функцией, то запрос становится уязвимым для
    взлома с помощью SQL-инъекций.
   
  
  Замечание: 
   
    mysql_real_escape_string() не экранирует символы
    % и _. Эти знаки являются масками
    групп символов в операторах MySQL LIKE, 
    GRANT и REVOKE.