最近有一个需求,前端向后台提交json,后台解析并且将提交的值插入数据库中,
难点
1、php解析json(这个不算难点了,网上实例一抓一大把)
2、解析json后,php怎样拿到该拿的值
<php
require
('connectphp');
/
本例用到的数据:
post_array={"order_id":"0022015112305010013","buyer_id":"2","seller_id":"1","all_price":"10000","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,获取对应的变量值
$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;//循环变量
//--得到Json_list数组长度
$num=count($obj["json_list"]);
//--遍历数组,将对应信息添加入数据库
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();
>
投稿者信息
昵称:
Hola
Email:
jamcistos@outlookcom
<script language="jscript" runat="server">
Arrayprototypeget = function(x) { return this[x]; };
function parseJSON(strJSON) { return eval("(" + strJSON + ")"); }
</script>
<%
Dim json, obj
json = "{a:""aaa"", b:{ name:""bb"", value:""text"" }, c:[""item0"", ""item1"", ""item2""]}"
Set obj = parseJSON(json)
ResponseWrite obja & "<br />" '直接获取
ResponseWrite objbname & "<br />" '获取指定key
ResponseWrite objclength & "<br />" '获取条数
ResponseWrite objcget(0) & "<br />" 'C的第一条
ResponseWrite objc & "<br />" '获取全部
Set obj = Nothing
%>
然后就是对应的更新到数据库就行了。
建议让JSON,整条的保存在数据库,取出来的时候这样解释就行了。。。
DELIMITER $$ USE `dw`$$ DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$ CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`( in_JsonArray VARCHAR(4096),#JSON数组字符串 in_Index TINYINT, #JSON对象序号,序号从1开始 in_KeyName VARCHAR(64)#键名 ) RETURNS VARCHAR(512) CHARSET utf8 BEGIN DECLARE vs_return VARCHAR(4096); DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096); #declare vs_Json varchar(4096); DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED; #写监控日志 #insert into dwt_etl_log(sp_name, title, description) #values('dwfn_Json_getKeyValue', '通过Json键名取键值', concat('in_JsonArray=', in_JsonArray)); SET vs_JsonArray = TRIM(in_JsonArray); SET vs_KeyName = TRIM(in_KeyName); IF vs_JsonArray = '' OR vs_JsonArray IS NULL OR vs_KeyName = '' OR vs_KeyName IS NULL OR in_Index 0 THEN #如果键名存在 SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName); SET vi_pos2 = LOCATE(',', vs_json, vi_pos1); IF vi_pos2 = 0 THEN #最后一个元素没有','分隔符,也没有结束符'}' SET vi_pos2 = CHAR_LENGTH(vs_json) + 1; END IF; SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', ''); END IF; END IF; END IF; RETURN(vs_return); END$$ DELIMITER ; 测试: {"old_current_score":"2","new_current_score":"0","old_grade_id":"1","new_grade_id":"1","grade_time":"2016-04-09 00:43:26","grade_upgrade_time":"2017-04-09 00:43:26"} select fn_Json_getKeyValue(reason,1,'old_grade_id')
$post('/auditing/ajax_aud',{'start':$("#start")val()},function(msg)
{
//alert(msg);
//obj = eval (+msg+);
obj = eval ("(" + msg + ")");
$("#content")html(objcontent);
});
这样调用 不懂hi我
这个可以吧json格式的字符串解析成数组json_decode()函数,变成数组以后就可以方便 *** 作了,可以删除数组中的任意一项,也可以增加一项比如:array_push($data,['sort'=>3,'catentryId'=>10003]),再变成json格式的存入数据库。方法有多种,这里简单的示例下
以上就是关于PHP接收json 并将接收数据插入数据库的实现代码全部的内容,包括:PHP接收json 并将接收数据插入数据库的实现代码、asp 怎么接收post过来的json数据,解析出来后写入数据库、求救,mysql怎么解析json等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)