簡體   English   中英

我如何在php MySQL數據庫中使用json字符串插入解碼的json數據

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM