update экранируя кавычки(символы)

217
23 июня 2017, 09:57

Приветствую! Необходимо добавить в БД примерно такого вида текст: Водка "Свояк". Получаю только первую часть... Водка :) Запрос выглядит так:

function updateBar(){
    foreach ($_POST['name'] as $id=>$v)
        $updBar= R::exec( 'UPDATE bar SET `name`="'.$_POST['name'][$id].'",price="'.$_POST['price'][$id].'"
WHERE id="'.$id.'"');
    exit;
}
if (isset($_POST['name']) AND !empty($_POST['name'])) { // если массив не пуст запустим update();
    updateBar();
}

-> Использую ORM redbaenphp <- Про функцию mysqli_real_escape_string(), читал. Пробовал так:

function updateBar(){
    $link = R::setup('mysql:host=localhost; dbname=Cafe', 'root', '');
    foreach ($_POST['name'] as $id=>$v)
        $updBar= R::exec( 'UPDATE bar SET `name`="'. $link->real_escape_string($_POST['name'][$id]).'",price="'.$_POST['price'][$id].'"
WHERE id="'.$id.'"');
    exit;
}
if (isset($_POST['name']) AND !empty($_POST['name'])) { // если массив не пуст запустим update();
    updateBar();
}

...не работает.

Answer 1

Перед апдейтом конвертируйте вводные данные при помощи функции php htmlspecialchars

Answer 2
str_replace('"','\"',$name);

А вот так пробовал?

Answer 3

Не используйте подстановку текста из переменных непосредственно в запрос и тогда экранирование вам вообще не понадобится, интерфейс БД сам обо всем позаботится. Используйте привязку переменных. Примерно так:

$updBar= R::exec( 'UPDATE bar SET `name`=?,price=? WHERE id=?',
                  Array($_POST['name'][$id], $_POST['price'][$id], $id)
                );

Взято из официальной документации

READ ALSO
выводим таблицу из двух запросов

выводим таблицу из двух запросов

Драсте такой вопрос есть таблица друзей и есть таблица пользователей алгоритм такой,

224
Вычислить разницу между двумя датами php

Вычислить разницу между двумя датами php

ЗдравствуйтеНе получается вычислить количество дней между двумя датами по условию: Задача такова, нужно выделить все элементы с датой создания...

419
Более продуктивное изучение yii2

Более продуктивное изучение yii2

Хочется что-то типа hello, world! Но не просто тупо вывести надпись, а создать простое приложение, поняв, как и что должно быть в фрэймворке yii2, базовые...

159