Может ли кто-нибудь сказать мне, как вставлять специальные символы в базу данных 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'));