PHP中解析json

WBOY
发布: 2016-06-23 13:57:01
原创
1180 人浏览过

我从一个页面获取到一个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'];  这样才行。


谢谢啊   这样子就可以得到啦
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板