PHP-将数据库结果放入数组并附加变量
我正在从一个数据库中提取记录,我能够以我想要的方式以JSON格式显示数据,而且它工作得非常好。这里的问题是,我在页面上生成了一个令牌,我想将它添加到用户获得的有效负载中,这就是我得到的PHP-将数据库结果放入数组并附加变量,php,json,Php,Json,我正在从一个数据库中提取记录,我能够以我想要的方式以JSON格式显示数据,而且它工作得非常好。这里的问题是,我在页面上生成了一个令牌,我想将它添加到用户获得的有效负载中,这就是我得到的 {"user_details":[{ "id":"1", "fname":"xxx", "lname":"xxx Mensah", "phone_number":"0000000",
{"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
似乎预期的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"}]
代码:
$token = xxxxx;
$row = $conn->query("SELECT * from users where username='".$username."' and password='".$password."'");
$row->setFetchMode(PDO::FETCH_ASSOC);
$userdetails = $row->fetch(PDO::FETCH_OBJ);
$results = array(
array(
'user_details' => $userdetails
),
array(
'token' => $token
)
);
echo json_encode($results);
请注意,结果被包装在另一个数组中,而标记位于另一个数组中
fetchAll被fetch替换,因为您只需要一行而不是所有行,对吗
此示例可以帮助您了解数据的结构,以获得所需的结果:
<?php
$array = array(
array (
'user_details' =>
array (
'id' => '1',
'fname' => 'xxx',
'lname' => 'xxx Mensah',
'phone_number' => '0000000',
'email' => 'yourmail@mail.com',
'username' => 'xx',
'password' => 'xx',
'user_type' => 'xx',
),
),
array(
'token' => 'xxxxx'
)
);
echo json_encode($array);
你打字打错了吗?
请试试这个:
echo json_encode ([$results]);
对象的JSON编码字符串表示形式中的[]括号,而{}括号表示数组。因此,您的用户详细信息显示了一个对象,它是一个键、值对数组。然后,您将拥有一个数组,其中包含所有内容、令牌和用户详细信息 我倾向于尝试以下几点:
$userdetails = $row->fetch(PDO::FETCH_OBJ);
$object = (object) ['userdetails' => $userdetails, 'token' => $token];
echo json_encode($results);
我还没有测试过,但应该已经足够接近了。您的脚本非常开放,甚至可以在MYSQLI_uu或PDO API中使用。您所需的JSON无效。JSONIt与您的语句相反。[]是数组,{}是对象。我知道这么晚才回答问题是个错误发生在我们最好的人身上。考虑到您的代码反映了基本问题,我也这么认为。话虽如此,潜在的问题是他得到一个数组,其中包含一个对象,不管怎样,它都会以他不喜欢的形式序列化。添加fetch更改,我认为您的答案会使他最接近所需的结果。这非常接近,所以我要向上投票。关键是代码需要执行fetch和fetchall的标识。
$userdetails = $row->fetch(PDO::FETCH_OBJ);
$object = (object) ['userdetails' => $userdetails, 'token' => $token];
echo json_encode($results);