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

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

Я могу вставить специальные символы при использовании 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's a syntax error!' 

Вам нужно избегать цитат, например:

 SELECT * FROM `table` WHERE `column` = 'Here\'sa 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 ''='' 

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

C.

Вероятно, « 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'));