Задать вопрос
@Kirill-Gorelov
С ума с IT

Как сохранить & ' " в Mysql php?

Ребят, привет.
Подскажите как сохранить текст в базу, если он содержит знаки ' и ".
Мой запрос: INSERT INTO `message`(`email_otvet`, `messageh`, `messaget`) VALUES ('$emailotveta','$messageh', '$messaget')";
Мне приходится перед сохранением эти знаки делать в спецсимволы
$messageh = str_replace('"', '"', $messageh);
 $messageh = str_replace("'", "'", $messageh);


На выходе, что бы отправить это содержимое через get параметр делать обратно
$messageh = str_replace('"', '"', $messageh);
 $messageh = str_replace("'", "'", $messageh);


Как мне избавиться от этих лишних действий!
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Использовать PDO или mysqli с плейсхолдерами.
Ответ написан
Комментировать
rpsv
@rpsv
делай либо хорошо, либо никак
Вообще не круто вы поступаете.

Немного теории: https://ru.wikipedia.org/wiki/Внедрение_SQL-кода

Немного практики: php.net/manual/ru/pdo.prepare.php

Немного кода:
$dbh->prepare('INSERT INTO `message`(`email_otvet`, `messageh`, `messaget`) VALUES (?, ?, ?)')->execute([
    $emailotveta, $messageh, $messaget
]);
Ответ написан
Комментировать
@Quieteroks
php программист
Можно просто экранировать эти символы.
В каждом драйвере для этих целей имеется специальная функция.

php.net/manual/ru/mysqli.real-escape-string.php
php.net/manual/ru/pdo.quote.php

Или использоваться подготовленные запросы, тогда за Вас всю работу сделает драйвер.
Но не всегда же получается использовать подготовленный запрос, поэтому знать об экранировании желательно.
Ответ написан
Комментировать
villiwalla
@villiwalla
HTML-верстка
Символы в их сущность htmlentitiens()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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