Php 从jsonapi到mysql

Php 从jsonapi到mysql,php,mysql,json,api,Php,Mysql,Json,Api,我需要帮助将json数据解析到mysql。我的代码无效,这是我的代码 <?php $server = "localhost"; $username = "root"; $password = "12345"; $database = "json"; mysql_connect($server,$username,$password) or die("Failed"); mysql_select_db($database) or die("Database Failed"); $url =

我需要帮助将json数据解析到mysql。我的代码无效,这是我的代码

<?php
$server = "localhost";
$username = "root";
$password = "12345";
$database = "json";
mysql_connect($server,$username,$password) or die("Failed");
mysql_select_db($database) or die("Database Failed");

$url = "http://demo.miliarta.com/cityapi/all/?dealerid=TEN000005&user=dealer&passwd=dealer&cityid=316";
$string = file_get_contents($url);
$arr = json_decode($string, true);

//array instances specific to json items
$id = $arr["cityid"];
$id2 = $arr["stateid"];
$id3 = $arr["cityname"];
$id4 = $arr["statename"];
$s=0;
//Enumerating Array index
foreach($arr as $item=> $value){
    $s=count($value); // WIN
}
echo $s;
//suck the array for loop
for($i=0;$i<$s;$i++){
    $cityid= $id[0];
    $stateid = $id2[$i];
    $cityname = $id3[$i];
    $statename = $id4[0];
    mysql_query("INSERT INTO city (cityid, stateid, cityname, statename) VALUES('$cityid', '$stateid', '$cityname', '$statename')") or die (mysql_error());
}
?>

为您修复了它。循环错误,需要首先查看
$arr
以获取每行数据

试试这个:

<?php
// Your database configs here

$url = "http://demo.miliarta.com/cityapi/all/?dealerid=TEN000005&user=dealer&passwd=dealer&cityid=316";
$string = file_get_contents($url);
$arr = json_decode($string, true);

foreach($arr as $item){
    $cityid = $item['cityid'];
    $stateid = $item['stateid'];
    $cityname = $item['cityname'];
    $statename = $item['statename'];

    mysql_query("INSERT INTO city (cityid, stateid, cityname, statename) VALUES('$cityid', '$stateid', '$cityname', '$statename')") or die (mysql_error());
}

我不完全明白这里发生了什么。该错误源于以下事实:的根元素是数组,而不是对象,因此它没有索引
cityid
stateid
cityname
statename
。在那之后,我无法理解循环的意图。如果代码解释得更深入一点也许会有帮助?乌兹恩,我向你发了一个facebook好友请求,我的名字是Ale Kyo,请接受。我有一个项目要和你讨论。当然。将接受您的fb请求。你能点击左边的勾号表示这是你问题的答案吗?