首页 > 解决方案 > 试图将mysql数据获取到json_output的两个while循环中

问题描述

嗨,我正在尝试进行两个 while 循环,以便能够正确分类我存储在数据库中的数据,然后将其 json_output

我的代码如下:

//verifica qual é o elemento pai
$sql1 = 'SELECT DISTINCT itempt_dim 
        FROM dim 
        WHERE id_dim = (
                        SELECT DISTINCT iddimblg_rdim 
                        FROM rdim 
                        WHERE iddimblg_rdim NOT IN (
                                                    SELECT iddim_rdim 
                                                    FROM rdim
                                                    )
                    )';

$result1 = mysqli_query($con, $sql1);

while ($row = mysqli_fetch_array($result1)) {

    $elem_pai = $row['itempt_dim'] ;

    $grupo = [
      'name' => $elem_pai,
      'color' => $cor_alea,
      'size' => 1,
      'children' => $marcas[]
    ];

    //query para obter os elementos filhos
    $sql2 = "SELECT itempt_dim 
            FROM dim 
            WHERE id_dim = ANY (
                                SELECT DISTINCT iddim_rdim 
                                FROM rdim 
                                WHERE iddimblg_rdim = (
                                                        SELECT id_dim 
                                                        FROM dim 
                                                        WHERE itempt_dim = ". "'" . $elem_pai . "'" ."
                                                        )
                            )";

    $result2 = mysqli_query($con, $sql2);

    //verifica os elementos filhos
    $marcas = [];

    while ($row = mysqli_fetch_array($result2)) {

      $marcas = [
        'name' => $row['itempt_dim'],
        'color' => $cor_alea,
        'size' => 1
      ];

    }

  }

  print_r(json_encode($grupo));

问题是我不断收到以下错误:

致命错误:无法使用 [] 读取第 25 行的 C:\wamp64\www\algoritmo_pdi\sunburst.php

有人能帮我吗 ?提前致谢!

标签: phpmysqljsonwhile-loop

解决方案


我认为这是错误的:

'children' => $marcas[]

这个覆盖每个循环

 $marcas = [
    'name' => $row['itempt_dim'],
    'color' => $cor_alea,
    'size' => 1
  ];

所以,更正的代码:

while ($row = mysqli_fetch_array($result1)) {

    $elem_pai = $row['itempt_dim'] ;

    $grupo = [
      'name' => $elem_pai,
      'color' => $cor_alea,
      'size' => 1,
      'children' => $marcas
    ];

    //query para obter os elementos filhos
    $sql2 = "SELECT itempt_dim FROM dim WHERE id_dim = ANY (SELECT DISTINCT iddim_rdim FROM rdim WHERE iddimblg_rdim = (SELECT id_dim FROM dim WHERE itempt_dim = ". "'" . $elem_pai . "'" ."))";

    $result2 = mysqli_query($con, $sql2);

    //verifica os elementos filhos
    $marcas = [];

    while ($row = mysqli_fetch_array($result2)) {

      $marcas[] = [
        'name' => $row['itempt_dim'],
        'color' => $cor_alea,
        'size' => 1
      ];

    }
}

推荐阅读