Кто-либо может сказать мне, как вставить специальные символы в базу данных MySQL? Я сделал Сценарий PHP, который предназначен для вставки некоторых слов в базу данных, хотя, если слово содержит 'затем это привычка быть вставленным.
Я могу вставить специальные символы, прекрасные при использовании PHPmyAdmin, но он просто не работает при вставке их через PHP. Могло случиться так, что PHP изменяет специальные символы во что-то еще? Если так, есть ли способ заставить их вставить правильно?
$insert_data = mysql_real_escape_string($input_data);
Предполагая, что у вас есть данные, сохраненные как $input_data
используйте mysql_real_escape_string
Итак, что делает mysql_real_escape_string ?
Эта функция библиотеки PHP добавляет обратную косую черту к следующим символам: \ n, \ r, \, \ x00, \ x1a, ' а также ". Важная часть состоит в том, что одинарные и двойные кавычки экранируются, потому что это символы, которые, скорее всего, открывают уязвимости.
Пожалуйста, узнайте о sql_injection. Вы можете использовать эту ссылку как начало
Вероятно, " mysql_real_escape_string ()
" будет работать для u
Вы, скорее всего, экранируете строку SQL, аналогично:
SELECT * FROM `table` WHERE `column` = 'Here's a syntax error!'
Вам нужно избегать кавычек, например:
SELECT * FROM `table` WHERE `column` = 'Here\'s a syntax error!'
mysql_real_escape_string ()
сделает это за вас.
Вы, вероятно, вставляете их прямо в запрос. Вместо этого вы должны «избежать» их, используя функцию appriopriate - mysql_real_escape_string , mysqli_real_escape_string или PDO :: quote в зависимости от расширения, которое вы используете.
Вы экранируете? Попробуйте использовать функцию 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 ''=''
т.е. проверки безопасности полностью игнорируются.
С.