Php с вызовом хранимой процедуры MariadB с использованием JSON_ARRAYAGG JSON_OBJECT возвращает данные, а также запрос (? ⇐ Php
Php с вызовом хранимой процедуры MariadB с использованием JSON_ARRAYAGG JSON_OBJECT возвращает данные, а также запрос (?
Сохраняемая процедура mariaDB
CREATE DEFINER=`user`@`localhost` ПРОЦЕДУРА `db`.`test`(IN STR varchar (128)) НАЧИНАТЬ ВЫБЕРИТЕ JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT)) ИЗ BOMI AS RES; КОНЕЦ вызывается php в функции следующим образом:
mysqli_query($link,"SET @p0='".$param1."'"); mysqli_multi_query ($link, "CALL test(@p0)") ИЛИ DIE (mysqli_error($link)); $данные = []; если ($result = mysqli_store_result($link)) { в то время как ($row = mysqli_fetch_assoc($result)) { $данные[] = $строка; } } возвращаемый массив ($status, $code, $message, $data);
вызывающая сторона печатает данные:
echo json_encode($data, JSON_UNESCAPED_SLASHES); Данные, возвращаемые в $data, верны и представляют собой массив из трех записей
Хотя [Q1] результат имеет сам запрос в качестве префикса. Это правильно?
`[{"JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT) )":"[{\"AMNT\": 1.0000},{\"AMNT\": 1.0000},{\"AMNT\ ": 1.0000}]"}] ` и [Q2] данные имеют обратную косую черту. (да, (хак) с Stripslashes() работает, но как этого избежать?)
MariaDB версии 15.1 Distrib 10.11.2-MariaDB для debian-linux-gnu (x86_64) с использованием оболочки EditLine PHP 8.1.12-1ubuntu4.3 (cli) (собран: 17 августа 2023 г., 17:37:48) (NTS)
Ожидается:
'"[{"AMNT": 1.0000},{"AMNT": 1.0000},{"AMNT": 1.0000}]"}]'
Сохраняемая процедура mariaDB
CREATE DEFINER=`user`@`localhost` ПРОЦЕДУРА `db`.`test`(IN STR varchar (128)) НАЧИНАТЬ ВЫБЕРИТЕ JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT)) ИЗ BOMI AS RES; КОНЕЦ вызывается php в функции следующим образом:
mysqli_query($link,"SET @p0='".$param1."'"); mysqli_multi_query ($link, "CALL test(@p0)") ИЛИ DIE (mysqli_error($link)); $данные = []; если ($result = mysqli_store_result($link)) { в то время как ($row = mysqli_fetch_assoc($result)) { $данные[] = $строка; } } возвращаемый массив ($status, $code, $message, $data);
вызывающая сторона печатает данные:
echo json_encode($data, JSON_UNESCAPED_SLASHES); Данные, возвращаемые в $data, верны и представляют собой массив из трех записей
Хотя [Q1] результат имеет сам запрос в качестве префикса. Это правильно?
`[{"JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT) )":"[{\"AMNT\": 1.0000},{\"AMNT\": 1.0000},{\"AMNT\ ": 1.0000}]"}] ` и [Q2] данные имеют обратную косую черту. (да, (хак) с Stripslashes() работает, но как этого избежать?)
MariaDB версии 15.1 Distrib 10.11.2-MariaDB для debian-linux-gnu (x86_64) с использованием оболочки EditLine PHP 8.1.12-1ubuntu4.3 (cli) (собран: 17 августа 2023 г., 17:37:48) (NTS)
Ожидается:
'"[{"AMNT": 1.0000},{"AMNT": 1.0000},{"AMNT": 1.0000}]"}]'
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение