【问题标题】:Pass new php array key into json将新的 php 数组键传递给 json
【发布时间】:2015-01-12 19:42:57
【问题描述】:

我有 2 个表用户(id,userid,fn,ln)和 userdetails(id,userid,image,history,location,activity) 我已经为第一个表编写了一个查询来检索所有数据,我只想要第二个表的历史和位置。

我已检索到数组并将其发送到 json_encode。 现在我想检索历史、位置并创建一个新的键历史,我想将历史位置值添加到历史键。

我需要这些查询和 json 格式。

  • 对于特定用户,我需要检索的是自己的历史记录 在两个表中,用户 id 相同 提前致谢

    $sth = mysql_query("SELECT * FROM users");$result = mysql_fetch_assoc($sth); $i=0; foreach($result 作为 $data) { $final_array[$i]['id'] = $data['id']; $final_array[$i]['email'] = $data['email']; $final_array[$i]['f​​name'] = $data['fname']; $final_array[$i]['lname'] = $data['lname'];

        $sth2 = mysql_query("SELECT id,places,act FROM user_dates WHERE user_id= '".$data['email']."'");
        $result2 = mysql_fetch_assoc($sth2);
        $j=0;
        $history_array = array();
        foreach($result2 as $data2) { 
          $history_array[$j] = array("id" => $data2['id'],"places" => $data2['places'], "act " => $data2['act ']);
          $j++;
        }
        $final_array[$i]['history'] = $history_array;
    
    
        $i++;
    } 
    echo json_encode($final_array);
    

[ { “id”:“81”, "user_id": "2011", "fn": "asd.", “ln”:“wer”, “历史”: [ { “id”:“350”, “历史”:“make1”, “位置”:“qwe” } ] }, { “id”:“82”, "user_id": "2012", “fn”:“asd1”, “ln”:“wer1”, “历史”: [ { “id”:“350”, “历史”:“make2”, “位置”:“qwe2” } ] } ]

【问题讨论】:

    标签: php json


    【解决方案1】:

    Userdetails 表包含每个用户multiple records。所以你需要做子查询并得到结果,然后形成一个mulch-dimensional array。最后,encode as a JSON

    $sth = $dbh->prepare("SELECT * FROM users");
    $sth->execute();
    $result = $sth->fetchAll();
    
    $i=0;
    foreach($result as $data) { 
        $final_array[$i]['id'] = $data['id'];
        $final_array[$i]['userid'] = $data['userid'];
        $final_array[$i]['fn'] = $data['fn'];
        $final_array[$i]['ln'] = $data['ln'];
    
        $sth2 = $dbh->prepare("SELECT location,activity FROM userdetails WHERE userid= ".$data['id']."");
        $sth2->execute();
        $result2 = $sth2->fetchAll();
        $j=0;
        $history_array = array();
        foreach($result2 as $data2) { 
          $history_array[$j] = array("location" => $data2['location'], "activity " => $data2['activity ']);
          $j++;
        }
        $final_array[$i]['history'] = $history_array;
    
    
        $i++;
    } 
    echo json_encode($final_array);
    

    【讨论】:

    • 假设如果我想从 table1 获取所有数据,即用户,并且只从第二个 table2 获取历史和活动,即用户详细信息
    • 您可以简单地添加“选择用户。*, , userdetails.history, , userdetails.activity”
    • 对于历史,我缺少方括号 "History": [ { "id": "350", "history": "make1", "Location": "qwe" } ] 如上所示可以为这些做些什么
    • $final_array[$i]['history'] = array(array("id" => $data['userDetailsId'], "history" => $data['history'], , "位置" => $data['位置']));
    • 查询运行依赖于 2 个表,如果我想要 2 运行一个查询依赖于 1 个表例如:对于这 2 个用户,我只有两个用户,表中将存储 n 个历史记录2,我只需要输出中的 2 行,所有历史记录都应该在用户的特定行内。你能告诉我什么解决了我的问题吗
    猜你喜欢
    • 2018-02-02
    • 2018-01-18
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多