подскажите как правильно сделать UPDATE полей в таблице и вернуть содержимое поля --- Добавлено --- Код (Text): case "edit": $txt = $_POST[serv_list]; $sql = "UPDATE `service` SET `SERVICE` = '{$txt}' "; $sql.= " WHERE ID=".$object_id; вылетает ошибка. в поле имеется таблица, в которой в теге заданы стили Код (Text): <p style="font-size: 18px; color: #464342; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; padding: 10px 5px 10px 5px; text-align: center;"> он выдает ошибку на одинарные кавычки, как мне сделать, чтобы при обработке запроса одинарные кавычки стиля (font-family: 'Helvetica Neue',)подставить другим знаком
экранирование или подготовленные запросы. используешь mysqli? тогда mysqli real escape string и prepare
написал, не знаю правильно или нет, сейчас буду проверять Код (Text): case "edit": $txt = $_POST[serv_list]; $link = mysqli_connect('localhost', 'ginzzu', 'ginzzu', 'db67121m'); //подключались ранее с mysql_connect Данное расширение устарело начиная с версии PHP 5.5.0, и будет удалено, Используем вместо него mysqli_connect. ниже команды работают только с этой командой подключения к бд. if (!$link) { printf("Не удалось подключиться: %s\n", mysqli_connect_error()); exit(); } $stmt = mysqli_prepare($link, "UPDATE `service` SET `SERVICE` = ?{$txt}? "); //подготавливаем шаблон запроса ?- маркер которому присваиваем переменную. mysqli_stmt_bind_param($stmt, 's', $quote); //привязываем к маркеру значение переменной $quote $quote = "'"; $stmt .= " WHERE `ID` = ".$object_id; mysqli_stmt_execute($stmt); // выполняем подготовленный таким образом запрос. mysqli_stmt_close($stmt); //закрываем запрос. --- Добавлено --- и то, я заменил одинарные кавычки в запросе к бд, а мне надо было заменить именно в строке таблицы с данными(кодом html) <p style="font-size: 18px; color: #464342; font-family: 'Helvetica Neue', Helvetica... хз как сделать --- Добавлено --- БД выдвет такую ошибку: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<div class="text_page_wrapper"><h1 class="leter2" style="font-family: 'Helvetica' at line 1
@AlexsaiL лучше перепиши на mysqli real escape string, будет больше опыта, опять попытаешься с prepare. Надо основы тебе подтягивать. У тебя SQL запрос разорван на части в разных переменных, в одной ты всё более менее правильно сделал, а потом пошла жесть. Ты пол запроса не передал в mysqli_prepare, потом результат mysqli_prepare склеиваешь с текстом, хотя по документации mysqli_prepare вернёт FALSE или объект.
мне вот такой разорванный запрос скинули и что самое интересное он у человека работал, я его переделал, скинул не тот код --- Добавлено --- Код (Text): $stmt = mysqli_prepare($link, "UPDATE `service` SET `SERVICE` = ?{$txt}? WHERE `ID` =" $object_id); --- Добавлено --- основы подтягиваю, теория трудно запоминается, на практике лучше все усваивается, параллельно теорию повторяю
Ден, то есть в место этого: mysqli_stmt_bind_param() использовать : mysqli_real_escape_string($link, $...)....?
это нормально, просто больше времени надо налегай на отладку, потому что без неё будет сложно, ты должен сам уметь искать любые ошибки перечитывай и вникай какие ты функции используешь и пиши по частям программу и перепроверяй --- Добавлено --- думаю тебе это будет проще осилить, PHP: $sql = "UPDATE `service` SET `SERVICE` = '".mysqli_real_escape_string($link, $txt)."' WHERE `ID` = '".mysqli_real_escape_string($link, $object_id)."'";
я вот просто не пойму в чем ошибка, или в запросе к бд и обработке или в самом html коде? потому что когда я в html коде в прописанных стилях удаляю одинарные кавычки (font-family: 'Helvetica Neue',), все отображается правильно, но мне надо их заменить на символы чтобы они при обработке не выбивали ошибку, а с помощью этого проблему решить можно mysqli_real_escape_string?
сделай echo $sql; получишь запрос для базы и изучи его на правильность синтаксиса, вот и начало отладки, надо проверять какие запросы ты генерируешь в базу
Ден, а вот методом $_POST[serv_list]; мне приходит в переменную $txt код html, находящийся в строке таблицы БД $txt = $_POST[serv_list]; как можно заменить одинарные кавычки на юникод или спецкод html если юникод одинарной кавычки \2018? чтобы код html который приходит в запрос прогонялся и всем кавычкам присваивался юникод.
где одинарные кавычки для имени ключа? Если ты хочешь записать в базу данных html код, то тебе надо его экранировать, что из этого https://php.ru/forum/threads/kak-pr...blice-i-vyvesti-infu-polja.62474/#post-506256 не понятно?
эхх... что то я запутался немного) Ден, ты уж извиняй что мучаю тебя), что то тема тяжелой кажется. приходит html код и присваивается в переменную $txt, мне надо в пришедшем html коде найти одинарные кавычки, заменить их на спецсимвол \2018 (спецсимвол одинарной кавычки) и с помощью UPDATE вернуть обратно в БД код html только уже со спецсимволами вместо кавычек.
прихоть не моя, но мне надо решить такую задачу, заказчик хочет чтобы постоянно при апдейте одинарные кавычки в html коде менялись на символы во всех строках в таблице. потому что в каждой строке и каждом поле в ручную менять кавычки на символ очень долго. вот и решаю данную задачку.
отлично, в $txt меняем кавычки, например через str_replace, потом экранируем через mysqli real escape string, формируем SQL запрос, и выполняем его