Laravelでスマホ向けサーバプログラムを作っているのですが以下の点を教えてください。
別サーバから以下のようにPOSTで日本語利用してRequestします。
Laravelでみるとエンコードされているので、SQLで正常に検索できません。
データが”テレビ”で入っているので、検索されないようです。
PHP.iniで念のため、mbstring.http_inputやmbstring.encoding_translationをOffにしてみても同じでした。そもそもエンコードされて送信されるのが普通のような気がします。
LaravelのControllerでデコードするのも違う気がするのですが、全てのInputをデコードするのでしょうか?
そもそも、どのように解決すべきかご教授願います。
別サーバのCurlでPOSTリクエスト
php
1$params = array( 2 's_syubetu' => 'テレビ' 3); 4$curl = curl_init($url); 5curl_setopt($curl, CURLOPT_POST, TRUE); 6curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // パラメータをセット 7$response = curl_exec($curl); 8curl_close($curl);
Laravelで故意にエラーを出してSQLを出力していますがエンコードされてる「%\u30c6\u30ec\u30d3%」ので正常にselectできません。
sql
1select * from `tests` where `syubetu_name` LIKE '%\u30c6\u30ec\u30d3%'
Route
php
1Route::post('/search', 'testController@search');
Controller
php
1use Input; 2use Illuminate\Http\Request; 3use Illuminate\Support\Facades\DB; 4 5class testController extends Controller 6{ 7 public function search(Request $request) 8 { 9 $listpart = DB::table('tests'); 10 $s_syubetu = $request->input('s_syubetu'); 11 $listpart->where('syubetus.syubetu_name', 'LIKE', '\'%'.$s_syubetu.'%\''); 12 $listpart = $listpart->orderBy('updated_at', 'desc') 13 ->take(30) 14 ->get(); 15 } 16}

回答1件
あなたの回答
tips
プレビュー