php - 以特定格式将数据库导出为 json
问题描述
将数据库导出到 json 时,我以这种形式得到它:
[
{
"id": "1",
"siteId": "1",
"siteUrl": "localhost",
"identity": "mobie",
"lastIp": "127.0.0.1",
"lastLogin": "2018-05-17",
"loginCountry": "GB",
}
]
警告:第 81 行 C:\xamppp\htdocs\auth\mysql.php 中的非法字符串偏移 'id'
到所有 $user 变量。
我的数据库结构在第一个 json 输出中如上所示。
代码
public function db2json($query){
$stmt = $this->db->prepare($query);
$stmt->execute();
$data=$stmt->fetch(PDO::FETCH_ASSOC);
$output = [];
foreach ( $data as $result ) { // Change this to loop over the data
$user = [];
$user["id"] = $result["id"];
$user["siteId"] = $result["siteId"];
$user["lastIp"] = $result["lastIp"];
$user["lastLogin"] = $result["lastLogin"];
$user["loginCountry"] = $result["loginCountry"];
$output[$result["siteUrl"]][$result["identity"]] = $user;
}
echo json_encode($output, JSON_PRETTY_PRINT);
}
解决方案
我不得不建立一些测试数据,但这只是意味着你改变了foreach()
to 循环你的数据库结果。这不仅仅是将结果直接分配给输出,而是根据您在输出中的需要创建各种数组......
$output = [];
foreach ( $data as $result ) { // Change this to loop over the data
$user = [];
$user["id"] = $result["id"];
$user["siteId"] = $result["siteId"];
$user["lastIp"] = $result["lastIp"];
$user["lastLogin"] = $result["lastLogin"];
$user["loginCountry"] = $result["loginCountry"];
$output[$result["siteUrl"]][$result["identity"]] = $user;
}
echo json_encode($output, JSON_PRETTY_PRINT);
使用我的测试数据,这输出......
{
"localhost": {
"mobie": {
"id": "1",
"siteId": "1",
"lastIp": "127.0.0.1",
"lastLogin": "2018-05-17",
"loginCountry": "GB"
},
"user2": {
"id": "1",
"siteId": "1",
"lastIp": "127.0.0.1",
"lastLogin": "2018-05-17",
"loginCountry": "GB"
}
},
"othersite": {
"user1": {
"id": "1",
"siteId": "1",
"lastIp": "127.0.0.1",
"lastLogin": "2018-05-17",
"loginCountry": "GB"
}
}
}
推荐阅读
- sql - ON CONFLICT ... DO UPDATE SET 因重复行而失败
- typescript - 构造部分对象并正确推断类型
- python - 为什么 numpy RandomState 会给出不同的结果?
- firebase - 在 Tapkey 上处理过期 Firebase 令牌的最佳方法
- typescript - 找不到模块“rxjs”的声明文件。隐含地具有“任何”类型。尝试 `npm i --save-dev @types/rxjs 或添加新声明
- reactjs - React - 无法编辑美女明星(星级)
- android - 在android中处理onScroll滑动手势
- mongodb - 使用 mongodb 查询获取逗号存在文档?
- regex - 带有一个特定数字和一个单词的正则表达式
- python - 通过文件目标完善缓存