@Us59

Как передать переменную содержащую Html и выполнить SQL запрос?

Нужно передать данные в ф-цию, которая делает SQL запрос. На текущий момент все заканчивается ошибкой в php, поскольку color:green находится в " кавычках, если поставить ', то работает но при этом SQL не выполняется из-за ' кавычки. Где решение?)
spoiler
foreach ($request as $value) {
if ($value["id"] == 1) {
$REPLY_1 = "DATA: " . $value["INFO"] . "<br>Details: <span style="color:green;">Good</span><br>Other: <span style="color:green;">Good</span>";
$this->SuccessReply($value["Id"], $REPLY_1);
} elseif ($value["id"] == 2) {
$REPLY_2 = "DATA: " . $value["INFO"] . "<br>Details: <span style="color:red;">Bad</span><br>Other: <span style="color:green;">Good</span>";
$this->SuccessReply($value["Id"], $REPLY_2);
} ($value["id"] == 3) {
// итд..
}

///

    function SuccessReply ($Id, $Reply = null)
    {
        $this->DB->query("UPDATE orders SET Code = '" . $Reply . "', StatusId = '2' WHERE Id = '" . $Id. "'");
    }
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 3
irishmann
@irishmann
Научись пользоваться дебаггером
Не вставлять напрямую переменные в запрос, чревато SQL-injection заработать. Используйте подготовленные запросы. Наверняка Ваша библиотека позволяет это. Как костыль можно использовать hlmlspecialchars, addslashes .
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) кошмарный код, как в плане логики так и в плане оформления, все переменные и ключи то в верхнем регистре, то в нижнем, то в заглавном кемелкейсе, короче как угодно, но только не в стандарте PSR ).
2) Если вы используете строки, то во первых хорошей практикой является использовать одинарные кавычки, если внутри строковой переменной вы не используете функции или переменные, а во вторых если в строке кавычки того же типа что и кавычки начала/конца строковой переменной - внутренние кавычки экранируются обраным слэшем. В вашем случае достаточно просто "наружные" кавычки заменить на одинарные.
3) Вставка переменных в запрос - по рукам лопатой на! Есть механизм подготовленных запросов, специально для того чтобы упростить такие моменты как экранирование.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Больше всего в таких топиках поражают ответы. "Экранируйте". "addslashes". Странно, что не предлагают еще каменным молотком на гранитной глыбе HTML выбивать.

Развернутый ответ на этот вопрос дан здесь: Правильный способ хранения HTML-кода в MySQL

Конкретная реализация зависит от того, что лежит в $this->DB

Помимо всего прочего, такой HTML никогда не хранят в БД. Сохранять такие отформатированные сообщения в базе данных неверно по тысяче причин. Это бессмысленно и вредно. Все украшения надо добавлять при выводе, а в БД хранить только исходные данные.
Ответ написан
Ваш ответ на вопрос

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

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