關於PHP版本不同 json_encode返回值的問題

我的問題:

生產環境PHP7   測試環境PHP7

測試數據庫從正式copy出去的

A表之前的數據也一起copy出去了

線上 echo json_encode($data);出不來數據,但是切換到PHP5.6之後就出來。

測試echo json_encode($data);,沒有問題。PHP7。

找了很久發現幾個問題。

第一個:json_encode的數據一定要是utf-8的

5.5版本增加:失敗時返回的值從 null 字符串改成 FALSE。

原因:

php從mysql數據庫中取出數據如果不指定編碼方式爲utf8那麼中文將會變成”?”。因此返回值會變成false。

然後我那個表的數據是以前別人建的。數據也是當時添加進去的。關於金額的字段全部定義的 float

json_encode,對於float和double也是會有溢出的

然後我把金額的字段全改爲了decimal,然後發現還是不對,然後想到編碼問題。我之前的數據按照這個人設計的數據表

能力我覺得肯定utf8的數據沒有注意。之前的數據可能不是utf8的數據。所以我直接刪除了之前表中的數據,重新添加數據進去

完美解決!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章