Приветствую! Необходимо добавить в БД примерно такого вида текст: Водка "Свояк". Получаю только первую часть... Водка :) Запрос выглядит так:
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();
}
...не работает.
Перед апдейтом конвертируйте вводные данные при помощи функции php htmlspecialchars
str_replace('"','\"',$name);
А вот так пробовал?
Не используйте подстановку текста из переменных непосредственно в запрос и тогда экранирование вам вообще не понадобится, интерфейс БД сам обо всем позаботится. Используйте привязку переменных. Примерно так:
$updBar= R::exec( 'UPDATE bar SET `name`=?,price=? WHERE id=?',
Array($_POST['name'][$id], $_POST['price'][$id], $id)
);
Взято из официальной документации
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости