Php 尝试将mysql数据分成两个while循环,以输出json_
嗨,我正在尝试进行两次while循环,以便能够正确地对存储在数据库中的数据进行分类,然后将其输出 我的代码如下:Php 尝试将mysql数据分成两个while循环,以输出json_,php,mysql,json,while-loop,Php,Mysql,Json,While Loop,嗨,我正在尝试进行两次while循环,以便能够正确地对存储在数据库中的数据进行分类,然后将其输出 我的代码如下: //verifica qual é o elemento pai $sql1 = 'SELECT DISTINCT itempt_dim FROM dim WHERE id_dim = ( SELECT DISTINCT iddimblg_rdim F
//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));
问题是,我一直得到以下错误:
致命错误:无法使用[]在中读取
C:\wamp64\www\algoritmo\u pdi\sunburst.php,第25行
有人能帮我吗?提前谢谢 我认为这是错误的:
'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
];
}
}
第25行是哪一行?虽然与错误无关,但您正在覆盖While循环中的
$marcas
。您需要将结果分配给$marcas[]
第25行是:“'name'=>$elem_pai,@aynber问题是,我不希望输出是[{output}],我希望它只是{output}。您还需要将$grupo
移动到第二个while循环的下方,因为$marcas
在该循环之后才会创建/填充。呜呜!除了//verifica os elementos filhos$marcas=[]
需要超出$groupo=..的范围,或者`$marcus在您尝试使用它时还不存在