最近有一個(gè)需求,前端向后臺(tái)提交json,后臺(tái)解析并且將提交的值插入數(shù)據(jù)庫(kù)中,
十年的左云網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整左云建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“左云網(wǎng)站設(shè)計(jì)”,“左云網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
難點(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();
?
投稿者信息
昵稱:
Hola
Email:
jamcistos@outlook.com
本文實(shí)例講述了PHP生成及獲取JSON文件的方法。分享給大家供大家參考,具體如下:
首先定義一個(gè)數(shù)組,然后遍歷數(shù)據(jù)表,把相應(yīng)的數(shù)據(jù)放到數(shù)組中,最后通過(guò)json_encode()轉(zhuǎn)化數(shù)組
json_encode()
函數(shù)的功能是將數(shù)值轉(zhuǎn)換成
JSON
數(shù)據(jù)存儲(chǔ)格式。
putjson.php:
?php
//
生成一個(gè)PHP數(shù)組
$data
=
array();
$data[0]
=
array('1','吳者然','onestopweb.cn');
$data[1]
=
array('2','何開(kāi)','iteye.com');
//
把PHP數(shù)組轉(zhuǎn)成JSON字符串
$json_string
=
json_encode($data);
//
寫(xiě)入文件
file_put_contents('test.json',
$json_string);
?
有同名的
JSON
文件則覆蓋,沒(méi)有則創(chuàng)建。
生成或覆蓋的
JSON
如下:
復(fù)制代碼
代碼如下:[["1","\u811A\u672C\u4E4B\u5BB6",""],["2","\u7F16\u7A0B\u5F00\u53D1","jb51.net"]]
然后,把
JSON
文件中的數(shù)據(jù)讀取到PHP變量中。
getjson.php:
?php
//
從文件中讀取數(shù)據(jù)到PHP變量
$json_string
=
file_get_contents('test.json');
//
把JSON字符串轉(zhuǎn)成PHP數(shù)組
$data
=
json_decode($json_string,
true);
//
顯示出來(lái)看看
var_dump($data);
echo
'brbr';
print_r($data);
echo
'brbr';
echo
'編號(hào):'.$data[0][0].'
姓名:'.$data[0][1].'
網(wǎng)址:'.$data[0][2];
echo
'br';
echo
'編號(hào):'.$data[1][0].'
姓名:'.$data[1][1].'
網(wǎng)址:'.$data[1][2];
?
效果圖:
PS:這里再為大家推薦幾款比較實(shí)用的json在線工具供大家參考使用:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
JSON在線格式化工具:
在線XML/JSON互相轉(zhuǎn)換工具:
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
C語(yǔ)言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP中json格式數(shù)據(jù)操作技巧匯總》、《PHP針對(duì)XML文件操作技巧總結(jié)》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
把json字符串存入數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)里面存儲(chǔ)的字段是字符串類型或者text的話是可以直接存入的。
例如:
$sql?=?"insert?into?tablename?(fieldname)?values?('$jsondata')";
mysql_query($sql);
這樣就好了。
JSON在php中本質(zhì)是字符串,直接存儲(chǔ)就行了。
看你的圖片,并不是一個(gè)JSON,而是一個(gè)數(shù)組,所以需要先將數(shù)組轉(zhuǎn)碼為JSON,再進(jìn)行存儲(chǔ)。
//?使用內(nèi)置函數(shù):json_encode();
$data?=?array();
$jsonString?=?json_encode($data);
在PHP中解析JSON主要用到j(luò)son_encode和json_decode兩個(gè)PHP
JSON函數(shù),比PHP解析XML方便很多,下面詳細(xì)介紹下PHP
JSON的使用。
JSON基礎(chǔ)介紹
JSON(JavaScript
Object
Notation)
是一種輕量級(jí)的數(shù)據(jù)交換格式。
JSON主要有兩種結(jié)構(gòu):
“名稱/值”對(duì)的集合,在PHP中可以理解為關(guān)聯(lián)數(shù)組
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解為普通數(shù)組(array)。
對(duì)象是一個(gè)無(wú)序的“‘名稱/值'對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值'
對(duì)”之間使用“,”(逗號(hào))分隔。
數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開(kāi)始,“]”(右中括號(hào))結(jié)束。值之間使用“,”(逗號(hào))分隔。值(value)可以是雙引號(hào)括起來(lái)的字符串(string)、數(shù)值(number)、true、false、
null、對(duì)象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。
我目前對(duì)JSON的理解更偏向于數(shù)組,類似于PHP中的關(guān)聯(lián)數(shù)組,你可以將PHP數(shù)組轉(zhuǎn)換為JSON格式。
更多JSON的介紹請(qǐng)參考JSON官網(wǎng)和IBM關(guān)于JSON的介紹
PHP
JSON解析實(shí)例
PHP5.2開(kāi)始已經(jīng)將JSON作為PHP擴(kuò)展的一部分,所以并不需要另外安裝JSON。另外為了保證下面的PHP
JSON實(shí)例不出現(xiàn)中文亂碼,請(qǐng)保證你的編碼格式為UTF8。
JSON是Javascript的一部分,首先我們看下Javascript中如何定義JSON
復(fù)制代碼
代碼如下:
var
json_obj
=
{'WebName':'PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng)'};
alert(json_obj.WebName);
var
json_arr
=[{'WebName':'PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng)','WebSite':''},{'ArtTitle':'PHP
JSON實(shí)例講解'}]
alert(json_arr[1].ArtTitle);
var
php_json
=
[['PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng)',''],['文章標(biāo)題','PHP
JSON實(shí)例講解']];
alert(php_json[1][0]);
在這段JSON實(shí)例代碼中我構(gòu)建了所有的JSON形式,
第1行,定義了JSON以對(duì)象形式存在
第4行,定義了JSON以數(shù)組形式存在,嵌套了JSON對(duì)象,所以有點(diǎn)類似于PHP的關(guān)聯(lián)數(shù)組,其實(shí)仍然是對(duì)象。
第7行,定了JSON以普通數(shù)組形式存在。
注意:由于Javascript是區(qū)分大小寫(xiě)的,所以訪問(wèn)JSON關(guān)聯(lián)數(shù)組對(duì)象時(shí)注意key的大小寫(xiě)問(wèn)題。
PHP與JSON格式數(shù)據(jù)交互時(shí),第一步需要將PHP數(shù)組轉(zhuǎn)換為JSON格式的數(shù)據(jù),可使用PHP5自帶的json_encode函數(shù),當(dāng)PHP解析傳遞過(guò)來(lái)的JSON格式數(shù)據(jù)時(shí)需要使用json_decode函數(shù)進(jìn)行解析轉(zhuǎn)換為PHP數(shù)組,PHP轉(zhuǎn)換并解析JSON數(shù)據(jù)的實(shí)例代碼如下
復(fù)制代碼
代碼如下:
?php
$json_arr
=
array('WebName'='PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng)','WebSite'='');
$php_json
=
json_encode($json_arr);
echo
$php_json;
$php_json
=
json_decode($php_json);
print_r($php_json);
?
說(shuō)明:這里通過(guò)PHP定義了關(guān)聯(lián)數(shù)組,然后通過(guò)json_encode轉(zhuǎn)換為JSON格式的數(shù)據(jù),通過(guò)echo語(yǔ)句可以看到轉(zhuǎn)換后的JSON對(duì)象,通過(guò)PHP
JSON解析函數(shù)json_decode可以將JSON格式的數(shù)據(jù)解析為PHP的關(guān)聯(lián)數(shù)組。如果編碼不正確,JSON中文會(huì)出現(xiàn)亂碼。如果你使用Editplus調(diào)試PHP,請(qǐng)注意保存文件時(shí)編碼將ANSI改為UTF8。
最后我們來(lái)看下完整的PHP
JSON交互實(shí)例
復(fù)制代碼
代碼如下:
?php
$json_arr
=
array('WebName'='PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng)','WebSite'='');
$php_json
=
json_encode($json_arr);
?
script
type="text/javascript"
var
php_json
=
?=$php_json?;
/script
script
type="text/javascript"
function
php_json_dis(php_json)
{
alert(php_json.WebName);
alert(php_json.WebSite);
}
php_json_dis(php_json);
/script
至此,PHP通過(guò)json_encode和json_decode函數(shù)對(duì)JSON格式數(shù)據(jù)進(jìn)行轉(zhuǎn)換和解析的實(shí)例就介紹完了。
//演示用過(guò)程化風(fēng)格,如需要,自行翻譯成面向?qū)ο箫L(fēng)格
//讓瀏覽器識(shí)別json
header('Content-type:?application/json');
//1、連接數(shù)據(jù)庫(kù)
$conn?=?mysqli_connect("localhost","my_user","my_password","my_db");
//2、查詢
$query=?mysqli_query($conn,"select?*?form?table?where?1?limit?10");
$res?=?[];
//3、將查詢結(jié)果賦值給變量res
while($res?=?mysqli_fetch_assoc($query)){
$res[]?=?$res;
}
//4、輸出json
echo?json_encode($res);