|
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
|
|||||||||||
Прием Json в качестве тела для последующего разбора и запроса типа UPDATE mysql23.01.2020, 22:18. Показов 3766. Ответов 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,914
|
|||
| 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,914
|
||
| 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,914
|
||
| 25.01.2020, 20:02 | ||
|
0
|
||
| 25.01.2020, 20:02 | |
|
Помогаю со студенческими работами здесь
38
Как добавить функцию в качестве общей для последующего использования в совместном доступе Как mysql update выполнить через время после запроса?
Как создать автономную форму запроса для последующего занесения данных в БД Access ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|