|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
|||||||||||
Прием Json в качестве тела для последующего разбора и запроса типа UPDATE mysql23.01.2020, 22:18. Показов 3678. Ответов 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
Сообщений: 991
|
|||||||
| 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
Сообщений: 991
|
|
| 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
Сообщений: 991
|
||
| 25.01.2020, 16:12 [ТС] | ||
|
0
|
||
|
Просто Лис
|
|||||||||||
| 25.01.2020, 16:15 | |||||||||||
Так будет забавнее:
0
|
|||||||||||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
|
| 25.01.2020, 16:15 [ТС] | |
|
Да, вы правы, ради эксперимента велосипед назвал как "велосипед". Не прошло. Можно попробовать в квадратные скобки засунуть, сейчас попробую.
0
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
||||||
| 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
Сообщений: 991
|
|
| 25.01.2020, 18:13 [ТС] | |
|
в данном случае да, одинарная в начале и середине, как можно обойти?)
0
|
|
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
|
| 25.01.2020, 18:32 [ТС] | |
|
хочется дожать свою функцию, без prepared
0
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||
| 25.01.2020, 18:57 | |||
|
Если без подготовленных запросов, тогда для экранирования в PDO есть своя функция: https://www.php.net/manual/ru/pdo.quote.php
1
|
|||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
||||||
| 25.01.2020, 18:58 [ТС] | ||||||
|
Дожал, по вашему каверзному примеру json отработало тоже)
0
|
||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||
| 25.01.2020, 19:02 | ||
|
Прочитайте абзац, который чуть выше заголовка "Список параметров". И названия столбцов тоже надо фильтровать. Например, регуляркой удалять всё кроме англ. букв и подчёркиваний.
1
|
||
|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
|
||||
| 25.01.2020, 19:54 [ТС] | ||||
|
Ваш пример , даже если и выполнится, затронет 0 строк на стороне mysql, это у меня тоже слушается) Добавлено через 6 минут Добавлено через 30 минут PDO у меня используется при аутентификации, так что с точки зрения инъекции тут рисков нет. Как и у всех есть риск взлома сессии если юзать через wifi (и то они все разные, так как я не пошел по пути хранения логина и пароля в сессии/либо в куках), а так хрен пробится.
0
|
||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||
| 25.01.2020, 20:02 | ||
|
0
|
||
| 25.01.2020, 20:02 | |
|
Помогаю со студенческими работами здесь
38
Как добавить функцию в качестве общей для последующего использования в совместном доступе Как mysql update выполнить через время после запроса?
Как создать автономную форму запроса для последующего занесения данных в БД Access ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|