実現したいこと
フリーワード検索で漢字を入力したときに正しい検索結果が表示されるようにしたい
前提
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 コメント