解码 Json 数据数组并插入到 mysql

Posted

技术标签:

【中文标题】解码 Json 数据数组并插入到 mysql【英文标题】:Decode Json data Array and insert in to mysql 【发布时间】:2017-03-19 10:39:09 【问题描述】:

这个问题可能已经在这里问过了,但我试过搜索找不到它 我有如下 Json 数据

"CityInfo":["CityCode":"5599","Name":"DRUSKININKAI","CityCode":"2003","Name":"KAUNAS","CityCode":"2573","Name":"KLAIPEDA","CityCode":"1692","Name":"VILNIUS"],"StartTime":"2016-11-05 07:20:34","EndTime":"2016-11-05 07:20:34"

我尝试使用 php 提取这些并插入到 mysql db。但它不适合我,因为我是编码初学者,请帮助解决这个问题

下面我试过了

$jsondata = file_get_contents($jsonFile);
$data = json_decode($jsondata, true);
echo $data['Name'];
echo $data['CityCode'];
$db->save($data, "tableName"); // i found a php app to insert json to db

【问题讨论】:

你能发布到目前为止你尝试过的东西吗? 【参考方案1】:

您的 php 代码中存在一些问题。代码$data = json_decode($jsondata, true); 确实将您的 json 数据转换为 PHP 数组。但是,如果您需要提取需要插入到表中的数据,那么您需要这样做

$array_data = $data['CityInfo'];

现在$array_data 包含需要插入到表中的数据数组。您可以继续

$db->save($array_data, "tableName");

或者您可以使用 PHP MySQLiforEach 循环手动插入每一行

$conn = new mysqli($servername, $username, $password, $dbname);

foreach ($array_data as $row) 
    $sql = "INSERT INTO cityinfo (CityCode, Name) VALUES ('" . $row["CityCode"] . "', '" . $row["Name"] . "')";
    $conn->query($sql);

完整示例

<?php

$jsonFile="CityInfo.json";
$jsondata = file_get_contents($jsonFile);
$data = json_decode($jsondata, true);

$array_data = $data['CityInfo'];

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "yourDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);


foreach ($array_data as $row) 
    $sql = "INSERT INTO cityinfo (CityCode, Name) VALUES ('" . $row["CityCode"] . "', '" . $row["Name"] . "')";
    $conn->query($sql);


$conn->close();
?>

【讨论】:

很好的解释基兰!谢谢 很高兴知道:) 如何将其更改为 SELECT 而不是 INSERT?

以上是关于解码 Json 数据数组并插入到 mysql的主要内容,如果未能解决你的问题,请参考以下文章

如何将json数组插入mysql数据库

JSON / PHP数组到MYSQL插入[关闭]

使用 Laravel 在 MySql 中插入/更新/删除和获取 JSON

PHP从Android将JSON数据插入MySQL数据库

使用 PHP PDO 解码后将整个 JSON 插入数据库

如何在node.js中将json数组数据插入mysql?