[英]How can i insert decoded json data using json string in php mysql database
我有这个JSON字符串。
{"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}]}
代码如下:
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."'");
}
}
?>
问题是我无法通过获取值在数据库中插入数据,首先我必须从上述字符串中获取所有数据,然后级别字符串必须插入级别表,挑战记录字符串数组应插入挑战表中,所以我应该做得到上面的字符串输出吗?
您应该在foreach $arr->Level
$arr['Level']
更改$arr->Level
。
$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."'");
}
}
另一个答案是,如果您熟悉数组,可以设置
json_decode($string , true);
这将使您的数据成为数组结构
所以不要使用$ arr-> level; ,您可以像$ arr ['level'];一样访问它;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.