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

研究
この記事は約2分で読めます。

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

あるシステムのアカウント一覧テーブルの中の
アカウントのトップページともなる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がツボです。

コメント

タイトルとURLをコピーしました