php - 使用多维数组将 JSON 数据归档到 SQL 数据库

标签 php mysql json multidimensional-array

我正在编写一个脚本,它使用 CURL 从 API 获取 JSON 数据。在查看如何将数据从 JSON 存储到数据库本身时,我遇到了一个稍微令人困惑的问题。

该表显示了 JSON 键和相应的 SQL 列标题。

----------------------------
| JSON    | MySQL          |
----------------------------
| name    | name           |
| street  | address_line_1 |
| city    | city           |
| country | country        |
| zip     | postcode       |
| id      | api_id         |
----------------------------

返回了几种不同的 JSON 数据树,其中的键名称与数据库中的名称完全无关,因此总的来说让 SQL 标题与键匹配是不可能的。

假设我已经获取并在返回的 JSON 上运行 JSON_DECODE。

$json[0] = (
    ['name'] => 'Venue Name',
    ['street'] => 'Street Name',
    ['city'] => 'City',
    ['country'] => 'United Kingdom',
    ['zip'] => 'NE123ER',
    ['id'] => 'API Identifier'
);

并且我已经成功地使用以下代码输出了所有项目(返回的一些数据是嵌套的,例如在本例中)。

foreach($json as $event)
{
    $iter = new RecursiveArrayIterator($event);
    foreach(new RecursiveIteratorIterator($iter) as $key => $value) {
        if($iter->hasChildren())
        {
            if($key === 'id'){

            } elseif($key === 'name'){

            } elseif($key === 'street'){

            } elseif($key === 'city'){

            } elseif($key === 'country'){

            } elseif($key === 'zip'){

            }
        }
    }
}

我知道我基本上需要得到一个结果数据数组,然后我才能将其写入 MySQL 数据库。

$mysql_write[0] = (
    ['name'] => 'Venue Name',
    ['address_line'] => 'Street Name',
    ['city'] => 'City',
    ['country'] => 'United Kingdom',
    ['postcode'] => 'NE123ER',
    ['api_id'] => 'API Identifier'
);

但我不知道如何更改 key 。一个想法是制作一个转换树类型的东西,其中它们的键将是当前目标,并且在写入新数组以进行 SQL 写入时将使用该值。

$venue_tree = array(
    array('name' => 'name'),
    array('street' => 'address_line_1'),
    array('city' => 'city'),
    array('country' => 'country'),
    array('zip' => 'postcode'),
    array('id' => 'facebook_id')
);

但在这一点上,我自己感到困惑。这对任何人都有意义吗?

最佳答案

您是否期待这个,将键映射到其他键。

Try this code snippet here

<?php

ini_set('display_errors', 1);
$json = array(
    'name' => 'Venue Name',
    'street' => 'Street Name',
    'city' => 'City',
    'country' => 'United Kingdom',
    'zip' => 'NE123ER',
    'id' => 'API Identifier'
);
$venue_tree = array(
    'name' => 'name',
    'street' => 'address_line_1',
    'city' => 'city',
    'country' => 'country',
    'zip' => 'postcode',
    'id' => 'facebook_id');
$result=array();
foreach($venue_tree as $key => $changedKey)
{
    $result[$changedKey]=$json[$key];
}
print_r($result);

输出:

Array
(
    [name] => Venue Name
    [address_line_1] => Street Name
    [city] => City
    [country] => United Kingdom
    [postcode] => NE123ER
    [facebook_id] => API Identifier
)

关于php - 使用多维数组将 JSON 数据归档到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742743/

相关文章:

php - Symfony2 表单集合allow_add 和allow_delete 空错误(Silex)

php - 为什么我的 php 电子邮件脚本向我的垃圾邮件发送的电子邮件不在我的收件箱中?

php - sql语句从其他表中使用NOT IN排序

php - 如何在 json 文件中插入现有的 php 字符串文字?

c# - 无法加载文件或程序集 'Newtonsoft.Json, Version=10.0.0.0' - 但是二进制文件存在于 bin 文件夹中

javascript - JSON 数组语法。花括号(对象语法)是否绝对必要?

PHP设置动态数组索引

来自同名文本框的 PHP 请求名称

php - cURL 和 PHP 问题

PHP+AJAX 与 MySQL - 每 2 秒查询一次,在 TIME_WAIT 中太多