Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将数据库结果放入数组并附加变量_Php_Json - Fatal编程技术网

PHP-将数据库结果放入数组并附加变量

PHP-将数据库结果放入数组并附加变量,php,json,Php,Json,我正在从一个数据库中提取记录,我能够以我想要的方式以JSON格式显示数据,而且它工作得非常好。这里的问题是,我在页面上生成了一个令牌,我想将它添加到用户获得的有效负载中,这就是我得到的 {"user_details":[{ "id":"1", "fname":"xxx", "lname":"xxx Mensah", "phone_number":"0000000",

我正在从一个数据库中提取记录,我能够以我想要的方式以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


似乎预期的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);