|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|||||||||||
Прием Json в качестве тела для последующего разбора и запроса типа UPDATE mysql23.01.2020, 22:18. Показов 3901. Ответов 37
Здравствуйте!
Подскажите пожалуйста, как лаконичней всего обработать Json и вставить данные из него в тело запроса передаваемого в mySql. К примеру на страницу прилетает такой формат Json:
Чтобы из данного Json получился запрос mySql типа :
Уверен, что в PHP уже давно появился встроенный сахар для таких манипуляций. Помогите плиз.
0
|
|||||||||||
| 23.01.2020, 22:18 | |
|
Ответы с готовыми решениями:
37
Почему метод GET не годится в качестве ajax-запроса для передачи json? Требуется рабочий пример для последующего разбора работы с observablecollection Можно ли использовать LINQ для разбора JSON? |
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|||||||
| 25.01.2020, 15:48 [ТС] | |||||||
|
Рыжий лис, я до сих пор поражаюсь ,насколько семантически близок php и java)
Неплохой вариант, можно допилить потом в insert,delete. Положил в котомку) Добавлено через 43 минуты Со стороны клиента прилетают уже нужные поля, которые надо обновлять. Завернутые в Json. К примеру если у меня в форме на клиенте правится всего 4 поля (из 15ти существующих) , то только они и заворачиваются в Json вместе с ключевым полем и улетают на веб сервер. Это я реализовал на стороне клиент Java. Сервер принимает уже нужную строку Json с необходимым набором полей. Которую потом разбирает и составляет запрос на обновление) Должен же и клиент поработать , не все тащить на сервер с последующим разбором. Добавлено через 1 час 4 минуты Чуть доработал функцию, установил проставление кавычек в формирующейся строке mySql, все работает, проверил на mySql:
0
|
|||||||
|
Просто Лис
|
|
| 25.01.2020, 15:53 | |
|
https://www.php.net/manual/ru/... ection.php
Добавлено через 2 минуты https://www.php.net/manual/ru/... string.php
1
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|
| 25.01.2020, 16:04 [ТС] | |
|
Работаю через PDO , защита прописана на уровне mySql базы с ролями и пользователями, плюс как сами видите все движение идет через Json. С этой стороны SQL инъекция невозможна.
0
|
|
|
Просто Лис
|
|
| 25.01.2020, 16:08 | |
|
Если вы продолжаете собирать sql руками - то инъекция возможна.
Добавлено через 33 секунды Хотя, если вы доверяете данным в json... Добавлено через 1 минуту Речь даже не про инъекции, а про фильтрацию данных. Что произойдёт, если в имени товара будет содержаться двойная кавычка? Или одинарная?
0
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
||
| 25.01.2020, 16:12 [ТС] | ||
|
0
|
||
|
Просто Лис
|
|||||||||||
| 25.01.2020, 16:15 | |||||||||||
Так будет забавнее:
0
|
|||||||||||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|
| 25.01.2020, 16:15 [ТС] | |
|
Да, вы правы, ради эксперимента велосипед назвал как "велосипед". Не прошло. Можно попробовать в квадратные скобки засунуть, сейчас попробую.
0
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
||||||
| 25.01.2020, 18:05 [ТС] | ||||||
|
подскажите пожалуйста, как можно универсально экранировать входящее значение на MySql?
Ну к примеру ""ООО "Рога & Копытца "(// тратата //)" " Добавлено через 16 минут Или просто такого типа поле: ??Э"" ''/\ - """ &%^# передать на mysql как обычный текст Добавлено через 1 час 13 минут Разобрался, очень просто ларчик открывался, переписал метод:
Красота, потестил на рабочей таблице, с большим количеством полей. Собрал значение как можно каверзное, залетело и обновилось на ура, созранный запрос типа: UPDATE tbl_shipments SET svolume='',snetto='1535',sgross='2036',s hipment_complete='',eta_warehouse='2020-01-15',warehouse='Vnukovo',etd_custom='2020-01-13',eta_custom='2020-01-11',custom='Можайский',eta_pod='2020-01-10',etd_pol='2020-01-09',pod='Moscow',pol='New Delhi',shipment='тратата//;&*@#$$''""" ' ' \+- ())** .>^:::' WHERE "shipment_id"="35" сервер сожрал и не поморщился. Понимаю что можно было бы фигануть все при помощи bind и prepared statement , но тут выйдет масло масленное, и так подключение идет через PDO, а потом Json опять через него прогонять, думаю на существование данный пример имеет право.
0
|
||||||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|
| 25.01.2020, 18:13 [ТС] | |
|
в данном случае да, одинарная в начале и середине, как можно обойти?)
0
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|
| 25.01.2020, 18:32 [ТС] | |
|
хочется дожать свою функцию, без prepared
0
|
|
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,916
|
|||
| 25.01.2020, 18:57 | |||
|
Если без подготовленных запросов, тогда для экранирования в PDO есть своя функция: https://www.php.net/manual/ru/pdo.quote.php
1
|
|||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
||||||
| 25.01.2020, 18:58 [ТС] | ||||||
|
Дожал, по вашему каверзному примеру json отработало тоже)
0
|
||||||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,916
|
||
| 25.01.2020, 19:02 | ||
|
Прочитайте абзац, который чуть выше заголовка "Список параметров". И названия столбцов тоже надо фильтровать. Например, регуляркой удалять всё кроме англ. букв и подчёркиваний.
1
|
||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
||||
| 25.01.2020, 19:54 [ТС] | ||||
|
Ваш пример , даже если и выполнится, затронет 0 строк на стороне mysql, это у меня тоже слушается) Добавлено через 6 минут Добавлено через 30 минут PDO у меня используется при аутентификации, так что с точки зрения инъекции тут рисков нет. Как и у всех есть риск взлома сессии если юзать через wifi (и то они все разные, так как я не пошел по пути хранения логина и пароля в сессии/либо в куках), а так хрен пробится.
0
|
||||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,916
|
||
| 25.01.2020, 20:02 | ||
|
0
|
||
| 25.01.2020, 20:02 | |
|
Как добавить функцию в качестве общей для последующего использования в совместном доступе Как mysql update выполнить через время после запроса?
Как создать автономную форму запроса для последующего занесения данных в БД Access ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|