Как вставить специальные символы в базу данных?

Может ли кто-нибудь сказать мне, как вставлять специальные символы в базу данных MySQL? Я сделал PHP script, который предназначен для вставки некоторых слов в базу данных, хотя если слово содержит a, то оно не будет вставлено.

Я могу вставить специальные символы при использовании PHPmyAdmin, но он просто не работает при вставке их через PHP. Может быть, PHP меняет специальные символы на что-то еще? Если да, есть ли способ сделать их правильно вставленными?

Ответы

Ответ 1

$insert_data = mysql_real_escape_string($input_data);

Предполагая, что у вас есть данные, хранящиеся как $input_data

Ответ 2

Вы избегаете? Попробуйте функцию mysql_real_escape_string(), и она будет обрабатывать специальные символы.

Ответ 3

используйте mysql_real_escape_string

Итак, что делает mysql_real_escape_string?

Эта функция библиотеки PHP добавляет обратную косую черту к следующим символам:\n,\r, \,\x00,\x1a, 'и ". Важная часть состоит в том, что одиночные и двойные кавычки экранированы, потому что это символы скорее всего, откроют уязвимости.

Пожалуйста, сообщите о sql_injection. Вы можете использовать эту ссылку как начало

Ответ 4

Вы можете вставлять их непосредственно в запрос. Истед вы должны "убежать" от них, используя функцию appriopriate - mysql_real_escape_string, mysqli_real_escape_string или PDO:: quote в зависимости от используемого вами расширения.

Ответ 5

Скорее всего, вы избегаете строки SQL, похожей на:

SELECT * FROM `table` WHERE `column` = 'Here a syntax error!'

Вам нужно избежать кавычек, например:

SELECT * FROM `table` WHERE `column` = 'Here\ a syntax error!'

mysql_real_escape_string() обрабатывает это для вас.

Ответ 6

Обратите внимание, что, как указали другие, 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 ''=''

то есть. проверки безопасности полностью исключены.

С.

Ответ 7

Вероятно, "mysql_real_escape_string()" будет работать для u

Ответ 8

$var = mysql_real_escape_string("data & the base");
$result = mysql_query('SELECT * FROM php_bugs WHERE php_bugs_category like  "%' .$var.'%"');

Ответ 9

Используйте это: htmlentities($_POST['field']);

Достаточно. Это для специального символа:

Использовать для CI htmlentities($this->input->post('control_name'));