mysql保存微信昵稱


最近做得都是微信公眾號的項目,第一次做,所以有些問題都記錄一下

最初在保存用戶微信昵稱的時候都是直接保存的,后來朋友某些不規則昵稱的時候才發現問題

第一個辦法是:

用的是tp5.1,所以在表model里面設置了

1     public function setNicknameAttr($value){
2         return base64_encode($value);
3     }
4     public function getNicknameAttr($value){
5         return base64_decode($value);
6     }
View Code

這樣在保存和獲取的時候都能直接轉換了

有幾個問題,一個是如果后台要按照昵稱來搜索,會出現問題

mysql有一個from_base64()函數,來把php通過base64_encode()加密的字段解密,不過沒找到tp5.1中有配合mysql的from_base64()的功能,只能用原生了

 1 SELECT
 2     *
 3 FROM
 4     table
 5 WHERE
 6     (
 7         from_base64 (nickname) LIKE "%find%"
 8         AND `subscribe` = 1
 9     )
10 ORDER BY
11     `create_time` ASC
View Code

第二個問題其實跟第一個類似,就是如果要用到加密過的字段來進行某些判斷或搜索,還是要通過解密的

第二個辦法是:

網上說

1.把數據庫中昵稱的字段改為utf8mb4

2.把tp5.1的數據庫配置文件中的數據庫默認編碼(charset),有utf-8改為 utf8mb4。

第二個辦法我沒有試過,只是記錄一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM