2012-07-24 59 views
0

我需要帮助解析json数据到mysql。我的代码不工作,这是我的代码。从json api到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()); 
} 
?> 

问题是上线22 说明:未定义指数:cityid在C:\ XAMPP \ htdocs中\ JSON \ jsontosql.php上线22 说明:用C STATEID::未定义指数\ XAMPP \第23行的htdocs \ json \ jsontosql.php 注意:未定义的索引:在C:\ xampp \ htdocs \ json \ jsontosql.php中的cityname在第24行 注意:未定义索引:statename在C:\ xampp \ htdocs \ json \ jsontosql.php 25行 4表'json.city'不存在

tq寻求帮助。

+0

我不完全得到什么是怎么回事。错误来自这样一个事实,即[源数据](http://demo.miliarta.com/cityapi/all/?dealerid=TEN000005&user=dealer&passwd=dealer&cityid=316)的根元素是一个数组,而不是一个对象,所以它没有索引'cityid'或'stateid'或'cityname'或'statename'。之后,循环的意图超出了我的想象。如果代码被更深入地解释了,也许它会有所帮助? – Matchu 2012-07-24 03:15:51

回答

1

为你修复它。你的循环是错误的,你需要先看$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()); 
} 
+0

Tq bro。这项工作非常适合我 – 2012-07-24 07:46:20

+0

没有问题。你可能想接受答案。 – uzyn 2012-07-24 08:02:43

+0

Uzyn我向你表达Facebook好友的要求,我的名字是Ale Kyo,请接受。我有一个项目将会与你讨论。 tq – 2012-07-24 08:42:08