最近有一個(gè)需求,前端向后臺(tái)提交json,后臺(tái)解析并且將提交的值插入數(shù)據(jù)庫(kù)中,
目前創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、共青城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
難點(diǎn)
1、php解析json(這個(gè)不算難點(diǎn)了,網(wǎng)上實(shí)例一抓一大把)
2、解析json后,php怎樣拿到該拿的值
?php
require
('connect.php');
/*
本例用到的數(shù)據(jù):
post_array={"order_id":"0022015112305010013","buyer_id":"2","seller_id":"1","all_price":"100.00","json_list":[{"product_id":"3","product_number":"3"},{"product_id":"8","product_number":"2"},{"product_id":"10","product_number":"4"}]}
*/
$post_array=$_POST['post_array'];
//--解析Json,獲取對(duì)應(yīng)的變量值
$obj=json_decode($post_array,TRUE);
$order_id
=
$obj['order_id'];
$buyer_id
=
$obj['buyer_id'];
$seller_id
=
$obj['seller_id'];
$all_price
=
$obj['all_price'];
$i=0;//循環(huán)變量
//--得到Json_list數(shù)組長(zhǎng)度
$num=count($obj["json_list"]);
//--遍歷數(shù)組,將對(duì)應(yīng)信息添加入數(shù)據(jù)庫(kù)
for
($i;$i$num;$i++)
{
$list_product_id[]=$obj["json_list"][$i]["product_id"];
$list_product_number[]=$obj["json_list"][$i]["product_number"];
$insert_order_product_sql="INSERT
INTO
tbl_order_product
(order_id,product_id,product_number)
VALUES
(?,?,?)";
$result
=
$sqlconn
-
prepare($insert_order_product_sql);
$result
-
bind_param("sss",
$order_id,$list_product_id[$i],$list_product_number[$i]);
$result-execute();
}
//--添加訂單信息
$insert_order_sql="INSERT
INTO
tbl_order
(order_id,buyer_id,seller_id,all_price)
VALUES
(?,?,?,?)";
$result=$sqlconn-prepare($insert_order_sql);
$result-bind_param("ssss",$order_id,$buyer_id,$seller_id,$all_price);
$result-execute();
$result
-
close();
$sqlconn
-
close();
?
投稿者信息
昵稱(chēng):
Hola
Email:
jamcistos@outlook.com
根據(jù)你的代碼,你是用的是POST方法。
要在PHP中整體接收POST數(shù)據(jù),有兩種方法。
注意,要使用以下兩種方法,Content-Type不能為multipart/form-data。
方法一:
使用:
file_get_contents('php://input')
其中,php://input是一個(gè)流,可以讀取沒(méi)有處理過(guò)的POST數(shù)據(jù)(即原始數(shù)據(jù))。相較于$HTTP_RAW_POST_DATA而言,它給內(nèi)存帶來(lái)的壓力較小,并且不需要特殊的php.ini設(shè)置。
方法二:
使用此方法,需要設(shè)置php.ini中的always_populate_raw_post_data值為On。
使用$HTTP_RAW_POST_DATA,包含了POST的原始數(shù)據(jù)。但這不是一個(gè)超全局變量,要在函數(shù)中使用它,必須聲明為global,或使用$GLOBALS['HTTP_RAW_POST_DATA']代替。
對(duì)于json,PHP有對(duì)應(yīng)的方法進(jìn)行操作。
一般而言,json會(huì)以字符串形式傳給PHP腳本,一般都是放在$_POST里面,
14
?php
// 接收
$json_parameter = $_POST['json_str'];
// 處理, 變成數(shù)組
$array = json_decode($json_parameter);
// PHP 把數(shù)組數(shù)據(jù)變成json格式字符串,發(fā)給頁(yè)面
$demo = array(
'key' = 'value',
'key2' = 'value2'
);
$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}
echo $demo_json;