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

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

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

16
задан John Saunders 8 January 2013 в 03:16
поделиться

7 ответов

$insert_data = mysql_real_escape_string($input_data);

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

28
ответ дан 30 November 2019 в 15:20
поделиться

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

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

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

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

6
ответ дан 30 November 2019 в 15:20
поделиться

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

2
ответ дан 30 November 2019 в 15:20
поделиться

Вы, скорее всего, экранируете строку 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 () сделает это за вас.

6
ответ дан 30 November 2019 в 15:20
поделиться

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

5
ответ дан 30 November 2019 в 15:20
поделиться

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

10
ответ дан 30 November 2019 в 15:20
поделиться

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

т.е. проверки безопасности полностью игнорируются.

С.

3
ответ дан 30 November 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: