新聞中心
php怎么接收json類型數(shù)據(jù)
PHP接收J(rèn)SON格式的數(shù)據(jù)
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供歷城網(wǎng)站建設(shè)、歷城做網(wǎng)站、歷城網(wǎng)站設(shè)計、歷城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、歷城企業(yè)網(wǎng)站模板建站服務(wù),10多年歷城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
在API服務(wù)中,目前流行采用json形式來交互。
給前端調(diào)用的接口輸出Json數(shù)據(jù),這個比較簡單,只需要組織好數(shù)據(jù),用json_encode($array) 轉(zhuǎn)化一下,前端就得到j(luò)son格式的數(shù)據(jù)。
接收前端提交的json數(shù)據(jù)稍微復(fù)雜一點(diǎn),原因是:PHP默認(rèn)識別的數(shù)據(jù)類型是application/x-標(biāo)準(zhǔn)的數(shù)據(jù)類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內(nèi)容無法解析,如果用$_POST數(shù)組來接收就會失??!
此時可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數(shù)據(jù)
查看手冊,可以發(fā)現(xiàn)$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區(qū)別:
$_POST:通過 HTTP POST 方法傳遞的變量組成的數(shù)組,是自動全局變量。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產(chǎn)生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數(shù)據(jù)。此變量僅在碰到未識別 MIME 類型的數(shù)據(jù)時產(chǎn)生。$HTTP_RAW_POST_DATA 對于 enctype="multipart/form-data" 表單數(shù)據(jù)不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數(shù)據(jù)不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
補(bǔ)充說明:PHP默認(rèn)識別的數(shù)據(jù)類型是application/x-標(biāo)準(zhǔn)的數(shù)據(jù)類型。
php 怎么POST獲取數(shù)據(jù)?
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type:
application/x-www-form-urlencoded提交的數(shù)據(jù)
解釋:也就是表單POST過來的數(shù)據(jù)
方法2、file_get_contents("php://input");
說明:
允許讀取
POST
的
原始數(shù)據(jù)
。
和
$HTTP_RAW_POST_DATA
比起來,它給內(nèi)存帶來的壓力較小,并且不需要任何特殊的
php.ini
設(shè)置。
php://input
不能用于
enctype="multipart/form-data"。
解釋:
對于未指定
Content-Type
的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”);來獲取原始數(shù)據(jù)。
事實(shí)上,用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括
二進(jìn)制文件
流也可以。
所以用方法二是最保險的方法
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產(chǎn)生
$HTTP_RAW_POST_DATA
變量包含有原始的
POST
數(shù)據(jù)。
此變量僅在碰到未識別
MIME
類型的數(shù)據(jù)時產(chǎn)生。
$HTTP_RAW_POST_DATA
對于
enctype="multipart/form-data"
表單數(shù)據(jù)不可用
如果post過來的數(shù)據(jù)不是PHP能夠識別的,可以用
$GLOBALS['HTTP_RAW_POST_DATA']來接收,
比如
text/xml
或者
soap
等等
解釋:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數(shù)據(jù)。
$_POST或
$_REQUEST
存放的是
PHP以key=value的形式格式化以后的數(shù)據(jù)。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數(shù)據(jù)取決于centent-Type的設(shè)置,即POST數(shù)據(jù)時
必須顯式示指明Content-Type:
application/x-www-form-urlencoded,POST的數(shù)據(jù)才會存放到
$GLOBALS['HTTP_RAW_POST_DATA']中
php 獲取 sql 數(shù)據(jù)類型
describe?tablename;????????????//獲取表結(jié)構(gòu)信息
describe?tablename?fieldname;??//獲取表的某個字段結(jié)構(gòu)信息
比如:describe?users?username;?//獲取users表的username字段的結(jié)構(gòu)信息
返回:array(
'Field'????='username',
'Type'?????='varchar(50)',
'Null'?????='NO',
'Key'??????='UNI',
'Default'??='',
'Extra'????=''
)
php 如何獲取mysql bigint類型數(shù)據(jù)
php 獲取數(shù)據(jù)是不需要寫類型的,你可以看下邊的例子:
$name="張三"; //這種就是字符串
$age=2; //這種就是數(shù)字
$other=array("123",22); //數(shù)組
像這些,你定義的什么類型,php就可以接受什么類型。不需要特意轉(zhuǎn)
當(dāng)前名稱:php怎么獲取數(shù)據(jù)類型 php常見的數(shù)據(jù)類型
當(dāng)前鏈接:http://fisionsoft.com.cn/article/dodshho.html