【CodeIgniter3】CodeIgniterでcollate utf8mb4_unicode_ciを使おうと試みた結果

投稿者:

はじめに

仕事に飽き足らずセルフ研究。

あるシステムのアカウント一覧テーブルの中の
アカウントのトップページともなるuseridとかいうカラムが厄介で
このカラムでアカウント絞らないといけないんですが
普通にイコールで検索すると当然 hoge と Hoge と HOGE を別アカウントとして検索しやがる。orz

いうこと聞かないんじゃ

WHERE userid collate utf8mb4_unicode_ci LIKE 'hoge'

こういうクエリを書ければ幸せなんですが
(´・ω・`)like使ってるくせに前方一致でも部分一致でも後方一致でもない
文字の表記揺れだけ拾いたいんだ

$this->db->where('userid collate utf8mb4_unicode_ci like ',$userid, false );

こうとか

$this->db->where('userid collate utf8mb4_unicode_ci like '. $userid);

ピリオドでくっつけるもっともぞんざいなやり方ね。

こうやったら、変な所でエスケープしやがった。orz
(´・ω・`)where句のいちばん後ろにfalseを入れたらエスケープしない約束だよね

解決

like句を使ってるなら、$this->db->likeを使ってみようと思い

$this->db->like('userid collate utf8mb4_unicode_ci', $userid, 'none', false);

こうやってみたら、成功。
個人的にはnoneとfalseがツボです。

コメントを残す