PHP使用POST传递json数据的接收与处理问题

是这样的,我的项目里需要使用POST给PHP页面传递一个JSON数组,然后接收并获取取中的值,并用FOR循环将取到的数据插入数据库 但是发现一个问题,我可以直接将接收到的数据插入数据库 却不能 转成数组 再从数组中取出 对应的项目 的值插入数据库 这是代码 :
<?php
$dingdan=$_POST['caidan'];
$json = new Services_JSON();
$dingdan = $json->decode($GLOBALS["HTTP_RAW_POST_DATA"]);
$dingdan_zhuanhuan = iconv("gbk", "utf-8//ignore",$dingdan);
$dingdan=(json_decode($dingdan_zhuanhuan, true));
function zhuanhua($ARR){
for($i=0;$i<count($ARR);$i++){
"];
}
?>
[{"dianming":"川味小吃","caiming":"三文鱼","caipinjiage":"35","goumaishu":"1","goumaijiage":"35","dingcanrenshoujihao":"18088082478"}]
把每一项取出插入MYSQL.上同是传过来的caidan 信息

前端传给服务器的只是json 格式的字符串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )

var_dump(json_decode($json));
var_dump(json_decode($json, true));
如果不带参数,则返回为对象
带上true时,返回数组

foreach($ARR as $k=>$v){
echo 'key='.$k.';value='.$v;
}
单独处理每个key 和对应的value就好追问

[{"dianming":"川味小吃","caiming":"三文鱼","caipinjiage":"35","goumaishu":"1","goumaijiage":"35","dingcanrenshoujihao":"18088082478"}]
这是我的JSON 图片是我的处理PHP代码 这个怎么数据总是插不进去啊

追答

不好意思没看到有图片
你传中文有编码处理吗?现在服务器端口php打印出接收的json,看数据收到没
然后试着单独打印某个属性,确保数据格式是正确有效的

追问

不好意思啊 刚才图片没传上来,耽误你时间了,麻烦帮忙再看看这个问题 我去提高悬赏值 谢谢 急用

追答

你的数据库语句直接在数据库运行没错是吧
打印一下$query结果是对的吗?
$ianming2和$caming2是否取到 了

追问

追答

json格式的问题,传过来的数据没有成功被转化成json对象

追问

[{"dianming":"川味小吃","caiming":"三文鱼"}]这个是传过来 并插入到数据库里面的JSON数据 我真的无奈了 觉得自己已经笨到无可救药了

追答$a = '[{"dianming":"川味小吃","caiming":"三文鱼"}]';
$json = json_decode($a,true);
foreach($json as $item){
    $dianming = $item["dianming"];
    $caiming = $item["caiming"];
}
echo $dianming.';'.$caiming;

 测试了一下,这样获取的数据是没问题的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-08
$dingdan=(json_decode($dingdan_zhuanhuan, true));
改为 $dingdan=(array) json_decode($dingdan_zhuanhuan, true);

for循环里 $ARR 也强制转换下 (array)$ARR

遇到过和你一样的问题,我是这么解决的