@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);


Как мне избавиться от этих лишних действий!
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 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

Или использоваться подготовленные запросы, тогда за Вас всю работу сделает драйвер.
Но не всегда же получается использовать подготовленный запрос, поэтому знать об экранировании желательно.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы