PHP中解析json

WBOY
Release: 2016-06-23 13:57:01
Original
1180 people have browsed it

我从一个页面获取到一个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)."'); ";
Copy after login

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


调试的时候$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' => '杭州网络科技有限公司'    ),  ));
Copy after login

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

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

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

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

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


谢谢啊   这样子就可以得到啦
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template