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