phpのフリーワード検索で漢字で検索できない

実現したいこと

フリーワード検索で漢字を入力したときに正しい検索結果が表示されるようにしたい

前提

nameとemailどちらもアルファベットでの検索結果は正しく表示される

照合順序について
name_sei,name_meiカラムはutf8_general_ci
emailカラムはlatin1_swedish_ci
db_connect.phpの設定はcharset=utf8mb4

該当のソースコード

PHP

1if (!empty($freeword)) {2 $conditions[] = "(name_sei LIKE :freeword OR name_mei LIKE :freeword OR email LIKE :freeword)";3 $params[':freeword'] = "%$freeword%";4 }

試したこと

OR email LIKE :freewordの部分を消去し、
$conditions[] = "(name_sei LIKE :freeword OR name_mei LIKE :freeword)";
と記述すると、問題なく漢字での名前検索ができました。

nameとemailを一緒にsql文に書くと漢字だけ検索結果が取得できません。
文字エンコードの問題かと思うのですが、カラムの照合順序を変更せずに解決する方法はないでしょうか?

補足情報(FW/ツールのバージョンなど)

PHP7
MariaDB

コメントを投稿

0 コメント