简体   繁体   中英

How can i insert decoded json data using json string in php mysql database

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM