Ответ 1
$insert_data = mysql_real_escape_string($input_data);
Предполагая, что у вас есть данные, хранящиеся как $input_data
Может ли кто-нибудь сказать мне, как вставлять специальные символы в базу данных MySQL? Я сделал PHP script, который предназначен для вставки некоторых слов в базу данных, хотя если слово содержит a, то оно не будет вставлено.
Я могу вставить специальные символы при использовании PHPmyAdmin, но он просто не работает при вставке их через PHP. Может быть, PHP меняет специальные символы на что-то еще? Если да, есть ли способ сделать их правильно вставленными?
$insert_data = mysql_real_escape_string($input_data);
Предполагая, что у вас есть данные, хранящиеся как $input_data
Вы избегаете? Попробуйте функцию mysql_real_escape_string(), и она будет обрабатывать специальные символы.
используйте mysql_real_escape_string
Итак, что делает mysql_real_escape_string?
Эта функция библиотеки PHP добавляет обратную косую черту к следующим символам:\n,\r, \,\x00,\x1a, 'и ". Важная часть состоит в том, что одиночные и двойные кавычки экранированы, потому что это символы скорее всего, откроют уязвимости.
Пожалуйста, сообщите о sql_injection. Вы можете использовать эту ссылку как начало
Вы можете вставлять их непосредственно в запрос. Истед вы должны "убежать" от них, используя функцию appriopriate - mysql_real_escape_string, mysqli_real_escape_string или PDO:: quote в зависимости от используемого вами расширения.
Скорее всего, вы избегаете строки SQL, похожей на:
SELECT * FROM `table` WHERE `column` = 'Here a syntax error!'
Вам нужно избежать кавычек, например:
SELECT * FROM `table` WHERE `column` = 'Here\ a syntax error!'
mysql_real_escape_string()
обрабатывает это для вас.
Обратите внимание, что, как указали другие, mysql_real_escape_string() решит проблему (как и добавляет), однако вы всегда должны использовать mysql_real_escape_string() по соображениям безопасности - подумайте:
SELECT * FROM valid_users WHERE username='$user' AND password='$password'
Что делать, если браузер отправляет
user="admin' OR (user=''"
password="') AND ''='"
Запрос будет выглядеть следующим образом:
SELECT * FROM valid_users
WHERE username='admin' OR (user='' AND password='') AND ''=''
то есть. проверки безопасности полностью исключены.
С.
Вероятно, "mysql_real_escape_string()
" будет работать для u
$var = mysql_real_escape_string("data & the base");
$result = mysql_query('SELECT * FROM php_bugs WHERE php_bugs_category like "%' .$var.'%"');
Используйте это: htmlentities($_POST['field']);
Достаточно. Это для специального символа:
Использовать для CI htmlentities($this->input->post('control_name'));