解码Json数据数组并插入到MySQL。

3
这个问题可能已经在这里被问过了,但我尝试搜索并没有找到它。我有以下类似的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 数据库中,但由于我是编程初学者,所以无法成功。请帮忙解决。
以下是我尝试过的内容:
$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
你能分享一下你目前尝试过的内容吗? - Rwd
1个回答

9
你的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();
?>

Kiran讲解得非常好!谢谢。 - Feroza
很高兴知道 :) - Kiran Muralee
我该如何将它改为SELECT而不是INSERT? - soria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接