php保存emoji表情字符至mysql

这里只对保存到mysql中进行说明

Mysql版本要求:5.5.3以上,硬性要求,如若不是,请忽略下文。

emoji表情为四字节字符,直接保存写入数据库会报错或乱码。网上有各种不靠谱,改mysql默认编码、改数据库编码种种。。。

这里明确告诉各位看官,最小设置,只需要设置两项:

1、对应表相应字段排序(COLLATE)设置为utf8mb4

2、连接数据库编码(charset)设置为utf8mb4

关于第二步注意:

1、如果以前编码为:utf8,请放心修改,utf8为utf8mb4子集,无缝过度

2、php中设置编码为utf8mb4有个小坑,如果是采用Mysqli连接数据库,并且是通过mysqli::set_charset方法设置编码,是无法起作用的,只能通过query执行“SET NAMES utf8mb4”来达到目的

3、如果是通过PDO连接mysql,则通过设置连接参数达到设置编码目的:

“options” => array(
PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES utf8mb4’
)

mysql开启、记录所有查询日志

5.1.12 以前

编辑/etc/my.cnf文件,在[mysqld]节下面添加:

log=/var/lib/mysql/general.log

需重启mysql才能生效,建议使用完了,关闭掉

5.1.12 以后

支持运行中开启

打开日志

SET GLOBAL general_log = ‘ON’;

关闭日志

SET GLOBAL general_log = ‘OFF’;

打开后日志默认会输出到data目录下,默认文件名是 hostname.log。hostname是你的机器名,重启后失效,推荐使用这种方法。

对应修改配置文件方法为,编辑/etc/my.cnf,在[mysqld]节点下面配置:

general_log = 1

也可以指定日志文件路径

general_log_file = 文件路径

延伸:

mysql日志类型: 
错误日志: log-err 
查询日志: log 
慢查询日志: log-slow-queries 
更新日志: log-update 
二进制日志: log-bin