FuelPHP(PHP5)でDBからas_array()で取得したバイナリ値がnullなのに対し、(PHP7)で取得したバイナリ値には値が入る違いの原因について
FuelPHPにて、DBからのSELECT文で取得する要素をas_array()でArray型で取得した内容について
PHP5の環境では、binaryが含まれるカラムにおいてはnullが格納されているのに対し、
PHP7の環境では、(きちんと?)バイナリ値が格納されているようです。
背景
PHP5の既存コードそのままにPHP7へアップデートしたことにより、
jsonを返すAPIにおいて正常に動作しなくなりました。
FuelPHPのController_Restを継承したクラスにて
return $this->response($json);
で返す値にバイナリ値が含まれ、jsonとしてうまくAPIで返せなくなったようです。
具体的にはこんな感じです。
$json = DB::select('*')->from('media')->execute('owner')->as_array(); return $this->response($json);
var_dump($json); array(3) { ["id"]=> string(8) "80000000" ["data"]=> string(40) "......" ["binary"]=> string(240002) "�����......�����"
※PHP5では上記["binary"]がnull
上記にとおり、おそらくPHP7の環境で、バイナリ値を含むようになってしまい、
jsonフォームが崩れたことによるのかと思っているのですが。。。
PHP5の環境が特別で、よしなにnullにしてくれていたのかもしれませんが、
PHP7での原因と対処策をご教授頂けると助かります。
環境
PHP : 5.4 -> 7.1
FuelPHP : 1.7 -> 1.8
MySQL : 5.6
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。