为了账号安全,请及时绑定邮箱和手机立即绑定

尝试从 JSON 格式的 2 个表中返回数据

尝试从 JSON 格式的 2 个表中返回数据

PHP
至尊宝的传说 2021-12-24 15:50:51
我正在查询成员表以返回该表中的所有数据,我还有另一个表,其中包含成员兴趣并通过成员 ID 将其链接到成员表。我想返回 JSON,以便成员兴趣显示为主要成员对象数据下的数组。这就是我要出去的http://www.dile.ng/member/model/getAllMem.php我宁愿只获得显示在顶部的兴趣,因为单独的对象显示为每个成员对象下的兴趣数组require_once("../functions.php");$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);  while($rowa=mysqli_fetch_assoc($resa)){    $data[]=$rowa;}   $data[]=$row;}echo json_encode($data);
查看完整描述

2 回答

?
犯罪嫌疑人X

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);


查看完整回答
反对 回复 2021-12-24
?
慕容708150

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; 

}


查看完整回答
反对 回复 2021-12-24
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信