[英]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.