mariaDB存储过程
CREATE DEFINER=`user`@`localhost` PROCEDURE `db`.`test`(IN STR varchar (128))
BEGIN
SELECT JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT) ) FROM BOMI AS RES;
END
字符串
PHP在函数中调用如下:
mysqli_query($link ,"SET @p0='".$param1."'");
mysqli_multi_query ($link, "CALL test(@p0)") OR DIE (mysqli_error($link));
$data = [];
if ($result = mysqli_store_result($link))
{
while ($row = mysqli_fetch_assoc($result))
{
$data[] = $row;
}
}
return array ($status, $code, $message, $data);
型
调用者打印数据:
echo json_encode($data, JSON_UNESCAPED_SLASHES);
型
$data中返回的数据作为3条记录的数组是正确的
虽然[Q1]的结果有查询本身作为前缀。这是正确的吗?
`[{"JSON_ARRAYAGG(JSON_OBJECT('AMNT', AMNT) )":"[{\"AMNT\": 1.0000},{\"AMNT\": 1.0000},{\"AMNT\": 1.0000}]"}]
`
型
[Q2]数据有反斜杠。(是的,用stripslashes()的(hack)可以工作,但是,如何避免?)
MariaDB Ver 15.1 Distrib 10.11.2-MariaDB,for debian-linux-gnu(x86_64)using EditLine wrapper PHP 8.1.12-1ubuntu4.3(编译:Aug 17 2023 17:37:48)(NTS)
预期:
'"[{"AMNT": 1.0000},{"AMNT": 1.0000},{"AMNT": 1.0000}]"}]'
型
1条答案
按热度按时间2guxujil1#
感谢您的提示。更改如下:
查询
字符串
我使用
printn_r()
,输出如下:输出
型
当我使用这个:
型
那么输出是这样的:
型