I have this JSON string.
{"Challenges":[{"phoneNumber":"1234567809","name":"Test2 Test2"},{"phoneNumber":"1234567890","name":"Test1 Test1"},{"phoneNumber":"8733806964*","name":"Dennish Desouzs"}],"Message":[{"message":"testchallenge1"}],"Level":[{"level_name":"testchallenge1","level_design":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022200000000000080002000000000000000002000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000200000000000000000002000000000000000000220000000000000000002000000000000000000020000060000000000000200000000000000000002000000000000000000000000000000000000000000000000000000","win_time":3,"play_no":1,"top_user_id":"45","no_challenge":0,"user_id":"45","win_no":1}]}
code is as below:
mysql_select_db("hello") or die('Cannot select Database');
mysql_select_db("hello") or die('Cannot select Database');
$string=$_GET['records'];
$arr=json_decode($string);
$levelArray=array();
foreach ($arr['Level'] as $key=>$value)
{
$levelArray[] = $arr->Level;
print_r($levelArray);
$j = 0 ;
foreach($levelArray as $levelItem)
{
mysql_query("INSERT INTO level(user_id,level_name,no_challenge,level_design,play_no,win_no,win_time,top_user_id)VALUES('".$levelArray[$j]->user_id."','".$levelArray[$j]->level_name.'","'.$levelArray[$j]->no_challenge.'","'.$levelArray[$j]->level_design.'","'.$levelArray[$j]->play_no.'","'.$levelArray[$j]->win_no.'","'.$levelArray[$j]->win_time.'","'.$levelArray[$j]->top_user_id."'");
}
}
?>
Problem is that I cannot insert data in the database by getting the values and at first I have to get all the data from the above string and then level string have to insert level table and challenge record string array should be insert in challenge table so what I should do to get this above string output?
You should change your $arr['Level']
to $arr->Level
in your foreach.
$levelArray = array();
foreach ($arr->Level as $key => $value)
{
$levelArray[] = $arr->Level;
$j = 0 ;
foreach($levelArray as $levelItem)
{
$values = $levelItem[$j];
mysql_query("INSERT INTO level(user_id,level_name,no_challenge,level_design,play_no,win_no,win_time,top_user_id) VALUES('".$values->user_id."','".$values->level_name.'","'.$values->no_challenge.'","'.$values->level_design.'","'.$values->play_no.'","'.$values->win_no.'","'.$values->win_time.'","'.$values->top_user_id."'");
}
}
Another answer is , if you're familiar with array you can set
json_decode($string , true);
this will make your data in array structure
so instead of using $arr->level; , you can access it like $arr['level'];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.