質問: 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
回答: 原因については分からないですが、$json['binary'] は DB 上には実際にバイナリデータが格納されているのですよね? であれば、挙動としては PHP7.1+FuelPHP-1.8 の挙動が正しいのでは? 実際、バイナリデータを取得したい場面もあるはずですし。 対応策は DB の仕様によると思いますが、該当箇所で binary というカラムが不要なら SELECT 時に省けば良いですし、binary に入っているデータがバイナリだったり文字列だったりという場合は、そのようなデータを扱う処理が他にもあるはずだと思うので、そこの処理を流用してよしなに処理すれば良いのかなと思います。