PHP 以 JSON 回傳格式化訊息

  相信PHP和MYSQL這兩個東西大家一定不陌生,而這兩樣搭配在一起就可以建立一個很輕巧方便的伺服器(多半都是配合Apache),在很多作業系統上都直接有軟體可以一次安裝完,例如:


  而因為前陣子五月初時去比賽,久違的又寫起了PHP、以及最近在教一些學生做專題時也有用到,所以重新審視一下以前寫的一些專案和網頁,有了點感觸。

  我專案的做法大多都是用PHP將資料庫輸出為JSON格式,方便網頁以AJAX或是APP的HttpRequest取用,所以無論是對資料庫的查詢、新增、修改還是刪除,都靠PHP執行後並回傳結果。執行畫面例如:


其實這樣的內容可能有點難看懂,JSON格式解析之後如下:
(解析方法可以看這裡,解析JSON的工具則是這個)



那會看JSON格式之後,我們就可以繼續往下探討了。正如我前面所說是PHP輸出的資料,所以其實要輸出成怎樣的格式都是看開發者,我們先來看看我以前的程式碼:


看完上面的程式碼可以理解到,程式執行狀態分別為:
  • SQL語法執行成功 資料數>0   ->   回傳查詢內容
  • SQL語法執行有誤 資料數=0   ->   回傳 0

  摁,所以可以從上述判斷如果整個網頁的回傳值若是0,代表一定是沒有輸出資料的,但問題來了,像最剛開始說的我們是用AJAX 或 HttpRequest去處理取得資料的這件事,而這類型的方法只要你不特別去寫是不會將收到的內容顯示出來的。因為這類型的方法通常都是預設你收到資料後應該要經過處理在輸出,例如像你收到的是JSON格式的資料,就必須要經過解析,取出欄位中的值,而不是直接Print出來。

那麼,如果SQL語法執行有誤該怎麼辦?

  這時候呢一般作法應該都是把回傳 0 改為回傳錯誤,但是那你又要怎麼判斷是資料內容還是錯誤訊息呢?如果查詢的內容是數筆資料並用陣列的方式呈現,是可以判斷陣列存不存在,如果不是再顯示錯誤訊息等等之類的,那麼這個很麻煩,也只能說以前寫的程式碼很不成熟。所以,我們換為以下作法:


如果看懂了可以理解,現在這個的執行狀態可以歸納為:
  • APP_KEY不符 SQL語法執行錯誤   ->  回傳 status = false 及錯誤訊息
  • APP_KEY相符 SQL語法執行成功   ->  回傳 status = true  及查詢結果

順便放一下輸出結果圖

APP_KEY不符  SQL語法執行錯誤





APP_KEY相符  SQL語法執行成功,沒查詢到資料





APP_KEY相符  SQL語法執行成功,查詢到 3 筆資料








  那如果回傳內容是這樣就好辦事了,只要判斷狀態 status 為 false,那一定伴隨錯誤訊息,反之若為 true,一定以陣列格式回傳資料 (即使是0筆也沒差,取資料時for迴圈頂多不跑,但不代表會錯誤),其實很多比較重視網路串流數據的公司都會這麼設計,比如抖音、LINELIVE、BitMEX 等。其實我們熟悉的全聯福利中心,他的網站裡的食譜頁面在取得資料時也是用固定得格式化訊息,但要預設哪一些資料怎麼呈現為你的格式,那就得看你們自己的需求去修改,但目前我寫的這個格式還算是夠用的,相關的包括連SQL 的 新增、修改、刪除都有附在我的github,有興趣的人可以試試看,或是修改成符合自己需求的格式吧!


留言

這個網誌中的熱門文章

Windows 8 EnterPrise 安裝過程及使用技巧

參加 2018 TCN創客松 的心得

參加 2018永續環境黑客松