最近のプロジェクトのマイクロチャネルパブリック番号、初めてをやっている、いくつかの問題がで記録されています
最初のマイクロチャネルの愛称で直接保存されているユーザーの時間を節約し、後で何人かの友人不規則なニックネームをそれが問題を発見されたとき
最初のアプローチは、次のとおりです。
テーブルに設けられtp5.1ので、モデルを使用して
1 パブリック 関数 setNicknameAttr($値){ 2 戻り BASE64_ENCODE($値)。 3 } 4 パブリック 関数 getNicknameAttr($値){ 5 リターン BASE64_DECODE($値)。 6 }
保存して得ることができたときに直接変換されるように
いくつかの問題がありますが、一つはバックグラウンド検索が、問題があるかどうニックネームに従うことです
MySQLは暗号化されたフィールドを解読するfrom_base64 BASE64_ENCODEによって、PHPに()関数)を持っている(ただし、MySQLのfrom_base64(とそこtp5.1を見つけられませんでした)だけでネイティブを使用することができ、機能
1 SELECT 2 * 3 FROM 4 表 5 6 ( 7 from_base64(ニックネーム)LIKE " %の検索%" 8 AND `subscribe` = 1 9 ) 10 ORDER BY 11 'create_time` ASC
第二の問題は、特定の判断や検索をするために暗号化されたフィールドを使用する場合、我々はまだ解読する必要があることを最初のようにして、実際にあります
第二のアプローチは、以下のとおりです。
オンラインは言いました
utf8mb4 1.ニックネームのデータベースフィールド
データベースのデフォルトのエンコード(文字セット)2. tp5.1プロファイルデータベース、そこUTF-8 utf8mb4します。
私は試していない第二の方法は、ちょうどそれを記録します