首页 > 解决方案 > PHP-将数据库结果放入数组并附加一个变量

问题描述

我正在从数据库中提取记录,我能够以我想要的方式以 JSON 格式显示数据,并且效果很好。这里的问题是我在页面上生成了一个令牌,我想将它添加到用户获得的有效负载中,这就是我得到的

{"user_details":[{
                "id":"1",
                "fname":"xxx",
                "lname":"xxx Mensah",
                "phone_number":"0000000",
                "email":"yourmail@mail.com",
                "username":"xx",
                "password":"xx",
                "user_type":"xx"
                }],
"token":"xxxxx"}

但我想得到这样的结果

[{"user_details":{
                "id":"1",
                "fname":"xxx",
                "lname":"xxx Mensah",
                "phone_number":"0000000",
                "email":"yourmail@mail.com",
                "username":"xx",
                "password":"xx",
                "user_type":"xx"
               },
"token":{"xxxxx"}
]

PHP

$token = xxxxx
$row = $conn->query("SELECT * from users where username='".$username."' and password='".$password."'");
$row->setFetchMode(PDO::FETCH_ASSOC);
$userdetails = $row->fetchAll(PDO::FETCH_OBJ);

$results = array(
    'user_details' => $userdetails,
    'token' => $token
);
echo json_encode(($results));

标签: phpjson

解决方案


对象的 JSON 编码字符串表示中的 [] 括号,而 {} 括号表示一个数组。因此,您的用户详细信息显示了一个对象,该对象是一个键值对数组。然后你有一个包含所有内容的数组,令牌和用户详细信息。

我倾向于尝试以下方式:

$userdetails = $row->fetch(PDO::FETCH_OBJ);
$object = (object) ['userdetails' => $userdetails, 'token' => $token];
echo json_encode($results);

我还没有测试过,但应该足够接近。


推荐阅读