繁体   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