关于php7 设计链接mysqlutf8mb4字符集的问题
PHP中文网
PHP中文网 2017-04-11 09:03:06
0
1
594

通过epel源安装php7后连接数据库直接提示:

Unable to set client connection character set: utf8mb4

使用utf8则没有报错

找到一种解决方案: 直接使用sql语句设置字符集则

SET NAMES 'utf8mb4';

但是使用这种方法, 总感觉不好, 而且之前代码需要改动的地方也不少, 有点划不来

大大们, 有解决方案吗, 这里先谢过了

PS: 没辙google了一天都没有找到解决方案, 不过估计是很傻B的问题

================================================================

问题原因找到了, 果然只是配置的问题

$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4', 'db_user', 'db_password');

to:

$pdo = new PDO('mysql:host=localhost;dbname=my_db', 'db_user', 'db_password', array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));

不知道为啥新版本的pdo的驱动无法直接设置连接字符集为utf8mb4, 讲道理应该是向后兼容才对的, 不过至少找到解决方案了 :-D

=====================2016-07-06 14:43:39=========================

彻底找到问题所在了, 直接看命令

yum remove php70w-mysql php70w-mysqli
yum install php70w-mysqlnd

/etc/init.d/php-fpm restart
/etc/init.d/nginx restart

phpinfo:

mysqli
Client API library version mysqlnd 5.0.12-dev - 20150407 - $Id: 241ae00989d1995ffcbbf63d579943635faf9972 $

之前一直没能找到原因就是因为, 只卸载了php70w-mysql, 而没有卸载php70w-mysql然后安装了php70w-mysqlnd, 导致php70w-mysqlnd驱动没有生效

PS: 也有可能是我没有重启php-fpmnginx的原因导致的, 不过姑且这么认是上述原因到诊的吧, 找到实际原因了, 还是蛮开心的, 能睡个好觉了 :-D

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
大家讲道理

utf8mb4 字符集更大,且兼容 utf8,其实使用 utf8mb4 更好。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板