【发布时间】:2020-10-09 23:23:01
【问题描述】:
有人可以帮我解决这个数组问题吗?我正在使用 MySQL 数据库,我试图在两个 while 循环中从两个表中获取值。我想合并结果,如下所述。我尝试使用以下代码实现此目的,但是,这对我不起作用。
$jsonObj= array();
$query="SELECT * FROM `tbl_news` ORDER BY `news_type` desc limit 50, 100";
$sql0 = mysqli_query($mysqli,$query) or die(mysqli_error($mysqli));
while($data = mysqli_fetch_assoc($sql0))
{
$nid = $data['id'];
$cquery = "select id from tbl_comments where news_id = '$nid'";
$cresult = mysqli_query($mysqli,$cquery);
$totalc = mysqli_num_rows($cresult);
$row['id'] = $data['id'];
$row['news_type'] = $data['news_type'];
$row['news_heading'] = stripslashes($data['news_heading']);
//Comments
$qry2="SELECT * FROM tbl_comments WHERE tbl_comments.`news_id`='".$nid."'";
$result2=mysqli_query($mysqli,$qry2);
$row2['totalc'] = $result2->num_rows;
if($result2->num_rows > 0)
{
while ($row_comments=mysqli_fetch_array($result2)) {
$row2['comment_id'] = $row_comments['id'];
$row2['news_id'] = $row_comments['news_id'];
$row2['user_name'] = $row_comments['user_name'];
$row2['user_email'] = $row_comments['user_email'];
$row2['comment_text'] = $row_comments['comment_text'];
$row['user_comments'][]= $row2;
}
}
else
{
$row2 = array();
}
array_push($jsonObj,$row);
}
$set['SET_News'] = $jsonObj;
header( 'Content-Type: application/json; charset=utf-8' );
echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
die();
我期待这个结果
"Set_News": [{
{
"id": "104",
"news_type": "any",
"news_heading": "Mews heade here 1",
"user_comments": [{
"totalc": 2,
"comment_id": "17",
"news_id": "104",
"user_name": "abhijeet",
"user_email": "XXX@gmail.com",
"comment_text": "nice"
},
{
"totalc": 2,
"comment_id": "18",
"news_id": "104",
"user_name": "abhijeet",
"user_email": "XXX@gmail.com",
"comment_text": "nice"
}
],
{
"id": "622",
"news_type": "any",
"news_heading": "News head here2",
},
}
}];
You can check result here... this is getting repeat inrelavent result comment list
【问题讨论】:
-
只需将
$row2['wid']更改为$row['wid']等数据,data2 将在同一个数组中结束?还是我在这里遗漏了什么? -
为什么
$row2['greet'] = $row2;这样做?您可能需要重新考虑一下您的数据结构。 -
谢谢,@MarkusAO 回复,我刚刚添加了新键 greet,在这个键下,我想在 while 循环中获取 $data2,使用 $row2['wid'] 没有任何结果到 $row['wid']
-
我更新了答案。
-
谢谢,@Samuel 我再次用实际图像结果更新了问题,同样的问题,希望你这次能理解。 cmets 结果重复。