我在将数据库查询的结果转换为json数组时遇到问题。我的输出如下所示:
{
"user_id": "1",
"username": "testuser1",
"user_permissions": [
{
"list_id": "1"
},
{
"list_id": "2"
},
{
"list_id": "3"
}
],
"android_app_id": null,
"iat": 1537694955,
"exp": 1537702155
}
json数组周围的括号({})会导致解析客户机响应中的数组时出现问题。我只需要一个简单的数组,比如(1,2,3)。
数组由数据库查询结果(php)生成,然后使用slim3操作 $this->response->withJson
:
$query = "SELECT list_id FROM permissions WHERE user_id='$user_id'";
$sth = $this->dbconnection->prepare($query);
$sth->execute();
$result_permissions = $sth->fetchAll();
return $result_permissions;
我真的很难将数据库结果转换为普通的json数组,因为php只知道关联数组(数字数组或带键数组),这会导致格式错误的json数组。
json输出返回到服务器。我使用slim3框架访问json数据和权限数组,如下所示: $user_permissions = $decoded_response['user_permissions'];
现在我试着用 $user_permissions[list'id][0]
这给了我 print_r
命令。
接下来我要做的是使用带有in操作符的数据库查询来检查权限id。因此,我需要生成一个数组,如(1,2,3)。。我现在被卡住了,因为我不知道如何从json生成这样的数组。。
对我来说,最简单的方法是在数据库查询之后直接生成这样一个数组,并在开始时将其添加到json中,但我不知道如何实现这一点。
有什么提示吗?
2条答案
按热度按时间qgzx9mmu1#
对于有相同问题的人,以下是我制作数组的步骤:
如果对该字符串进行json编码,将导致:
{user_permissions":["1","2","3"]}
这正是我需要的。insrf1ej2#
如果我了解你需要达到的目标,你可以使用
array_column
php函数获取列表id的数组http://php.net/manual/en/function.array-column.php输出
print_r
将得到一根像
(1,2,3)
你可以使用phpimplode
功能https://secure.php.net/manual/en/function.implode.php您将得到如下字符串:
(1,2,3)
.请记住,在sql查询中直接使用变量会导致sql注入漏洞