首頁  >  文章  >  後端開發  >  PHP中解析json

PHP中解析json

WBOY
WBOY原創
2016-06-23 13:57:011175瀏覽

我从一个页面获取到一个json字符串,然后将它转换为json数组再插入到数据库中,但插进去的都是空值,我确定能获取到json字符串。
    include_once('inc/conn.php');
    $json_string=$_REQUEST["visitor"];
    $addressInfo=json_decode( $json_string,TRUE);
        $name=$addressInfo['name'];
        $idcard=$addressInfo['idcrd']; 
        $visitedphone=$addressInfo['visitedphone'];
        $address=$addressInfo['address'];
        $visitedorganization=$addressInfo['visitedorganization'];
        echo"1$visitedphone";
        echo"2$address";
        echo"3$visitedorganization";
        $sql="insert into adress_list(name,idcrad,tel,adress,visitorganization)values('$name','$idcard','$visitedphone','$address','$visitedorganization'); ";
        $rest=0;
        $rest = mysql_query($sql);
        echo mysql_error();
        if($rest){
            echo "恭喜,上传成功!";
        }else{
            echo "上传失败,请重新上传!";
        }
    //关闭数据库 
    mysql_close($con);         

?>
这是我的代码   求大神指导,急求。。。


回复讨论(解决方案)

print_r($addressInfo);
看一下

print_r($addressInfo); 是什么结果

$addressInfo=json_decode( $json_string,TRUE);
如果是空,估计$json_string的值不是json格式,请检查此处。

很可能是引号问题。需要转义,否则的话SQL保错。

$sql="insert into adress_list(name,idcrad,tel,adress,visitorganization)values('".mysql_real_escape_string($name)."','".mysql_real_escape_string($idcard)."','".mysql_real_escape_string($visitedphone)."','".mysql_real_escape_string($address)."','".mysql_real_escape_string($visitedorganization)."'); ";

$addressInfo;//这个值应该判断下是否为空 然后再执行下面的逻辑比较好吧


调试的时候$addressInfo;的值

要怎么获取其中的name,idcard等的值呀,我用$name =  $addressInfo[0]['name'];会报错

$name =  $addressInfo['visitors'][0]['name'];  这样才行。

数组是这样的

$addressInfo = array(  'visitors' => array(    array(      'visitedphone'' => '13333333333',      'organization' => '浙江大学',      'phone' => '13888888888',      'address' => '杭州市浙大路38号',      'name' => '张三',      'visitedname' => '李总',      'idcard' => '510181198209108435',      'visitedorganization' => '杭州网络科技有限公司'    ),  ));

你取数是这样: $name=$addressInfo['name'];
显然是不对了

少了一层  foreach 一下你就看到了

应该这样写
$addressInfo=json_decode( $json_string,TRUE);
$addressInfo=['visitors'][0];
一下是你原来的代码

是不是你获得的是对象object,不是数组array

$name =  $addressInfo['visitors'][0]['name'];  这样才行。


谢谢啊   这样子就可以得到啦
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn