2 回答
TA贡献2080条经验 获得超4个赞
如果要将interest值合并到member对象中,则需要为它们创建一个单独的数组,然后将其作为字段添加到member对象中。这样的事情应该工作:
$sql="SELECT * FROM members";
$res=mysqli_query($dbconn,$sql);
while($row=mysqli_fetch_assoc($res)) {
$id=$row['member_id'];
$sqla="SELECT interest FROM memint WHERE memid='$id'";
$resa=mysqli_query($dbconn,$sqla);
$interests = array();
while($rowa=mysqli_fetch_assoc($resa)) {
$interests[] = $rowa['interest'];
}
$data[] = array_merge($row, array('interests' => $interests));
}
echo json_encode($data);
TA贡献1831条经验 获得超4个赞
数据库应该能够使用JSON_ARRAYAGG为您完成大部分工作
$sql = "SELECT members.*, JSON_ARRAYAGG(interest) AS interests FROM
members
INNER JOIN memint on members.member_id=memint.memid
GROUP BY members.member_id";
$res=mysqli_query($dbconn,$sql);
$data = array();
while($row=mysqli_fetch_assoc($res)) { $data[] = $row; }
echo json_encode($data);
(免责声明:我不使用 MySQL,但理论上这应该可行)
----
编辑:
我在这里可能有一个错误的假设:interestscolumn的值可能是一个 json string,而不是一个 php 数组。因此,在将其分配给$data您时,您需要对其进行解码,以便以后的编码工作。
它看起来更像
while($row=mysqli_fetch_assoc($res)) {
$row[‘interests’] = json_decode($row[‘interests’];
$data[] = $row;
}
- 2 回答
- 0 关注
- 159 浏览
添加回答
举报