Как экранировать sql запрос внутри texarea?
Подскажите пожалуйста с помощью чего реализуется экранирование sql запросов внутри input.
Немного подробнее для понимая, чего происходит и какая хочется итог.
Написан веб справочник, простая форма с input заголовка документа и textarea - содержимым. Для удобного ввода информации в textarea и редактирования я использую tinymce. Проблема заключается в том, что когда я хочу сохранить в заметку пример какого либо запроса, запрос который сохраняет всю эту заметку ломается и форма перестает работать. Происходит это от того, что мой пример запроса встраивается в запрос по сохранению формы и все идет по бороде. Каким образом можно сохранить такое содержимое не избавляясь от от него? Буду благодарен за пинок в правильном направлении.
Дополнительно:
Это очень просто сделать.
Надо всего лишь освоить подготовленные выражения.
Например, почитав вот тут https://habr.com/ru/articles/662523/
И все запросы, в которых участвуют переменные, выполнять только таким образом.
А texarea там, или tinymce - это уже без разницы.
- Большое спасибо!
Подготовленные выражения PDO и MySQLi.
- Большое спасибо!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы экранировать SQL запрос внутри textarea, нужно использовать функцию addslashes() или mysqli_real_escape_string() в зависимости от того, как вы работаете с базой данных.
Вот пример использования функции addslashes():
// Получаем данные из textarea $query = $_POST['query']; // Экранируем SQL запрос $escaped_query = addslashes($query); // Используем экранированный запрос для выполнения в базе данных
Если вы используете mysqli для работы с базой данных, то лучше использовать mysqli_real_escape_string():
// Получаем данные из textarea $query = $_POST['query']; // Подключаемся к базе данных $mysqli = new mysqli("localhost", "username", "password", "database"); // Экранируем SQL запрос $escaped_query = $mysqli->real_escape_string($query); // Используем экранированный запрос для выполнения в базе данных
Важно помнить, что экранирование SQL запросов не является идеальным способом защиты от SQL инъекций. Лучшим решением будет использование подготовленных запросов (prepared statements) или ORM (Object-Relational Mapping) для работы с базой данных.