В предыдущих рецептах происходила запись данных в таблицу БД в таком виде, каком они есть. Так делать можно только в том случае, если данные генерируются на сервере. Но если нужно записать данные, которые отчасти или полностью пришли с клиента, например, по средствам POST или GET запроса, то осуществлять запись без экранирования данных нельзя. Поскольку это может привести к созданию «дыры» в коде, через которую будет очень просто взломать или навредить работе базе данных или всего сайта.
Экранировать данные можно несколькими способами, если данные имеют числовое значение, то их нужно привести к числовому виду - целому числу или числу с плавающей точки, с помощью функций
int или
float. А если данные имеют строковый тип, то экранировать их нужно функцией
mysql_real_escape_string.
Пример:
define("HOST", "localhost");
define("USER", "root");
define("PASSWORD", "");
define("DB_NAME", "test_db");
//подключение к MySql
$db connect = mysql_connect(HOST, USER, PASSWORD, TRUE);
if (!$db_ connect) {
die('Ошибка подключения:'.mysql_error());
}
// выбор базы данных
mysql_selectdb(DB NAME, $db connect);
// устанавливаем кодировку
mysql_set_charset("utf8");
// получаем данные из POST запроса
// имя
$first name = $ POST['first name'];
// фамилия
$last name = $ POST['last name'];
// возраст
$age = $ POST['age'];
// экранируем данные
// строки
$first name = mysql_real_escape_string($first name);
$last name = mysql_real_escape_string($last name);
// число
$age = (int)$age;
// создание записи в таблице
$result = mysql_query("INSERT INTO `tbl users` (`f_name`, `l_name`, `age`) VALUES ('{$first_name}', '{$last_name}', {$age})");