PHP 多个行集返回 json_encode

问题描述

我正在使用 PDO 从具有多个选择语句的 MysqL 存储过程返回多个行集。目前我的循环代码如下所示。问题是 PHP 数组函数没有正确创建数组,只是分配给 json_encode 也不起作用。

        $stmt->execute();
    $values = array();
       
    do {
        $row = $stmt->fetchAll(PDO::FETCH_NUM);
        foreach ($row as $rowvalue) {
            $values = array($rowvalue);
        }      
    echo json_encode($values);
            
    } while($stmt->nextRowset());

以上语句的输出

[["52","1","2","3","4","MTD"]][["2561","2069","2532","2818","2362","9781"]][["16","10","55","41","24","130"]][["8","33","30","83","96","242"]][["60","47","61","58","213","379"]][["44","42","29","89","131","291"]]

当我将其传递回 ajax 并执行 jQuery.parseJSON 时,它显然失败了。我尝试在循环中的 $values 变量周围添加方括号,但这只会复制所有内容

我也试过用 json_encode 代替 values 变量,然后给我相同的精确输出减去一组方括号。似乎没有正确添加维度,但我的 PHP 不是那么强大。

任何指导将不胜感激。我很抱歉,但我没有看到与已经存在的建议答案的关系。我的情况不同,我同意应该在最后使用 json 但是当我这样做时它返回一个空值。

我已经修改了我的脚本,这样 json 就在最后,我正在填充 values 数组。但是,这会引发 500 错误

        $stmt->execute();
    
    do {
        $row = $stmt->fetchAll(PDO::FETCH_NUM);
        $values = array();
        foreach ($row as $rowvalue) {
            $values[] = array($rowvalue[0]);
        }     
    
    } while($stmt->nextRowset());
    
    echo json_encode($values);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)