当前位置:Gxlcms > PHP教程 > PHP中解析json

PHP中解析json

时间:2021-07-01 10:21:17 帮助过:26人阅读

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


谢谢啊 这样子就可以得到啦

人气教程排行