Heim > Backend-Entwicklung > PHP-Tutorial > 关于php7 设计链接mysqlutf8mb4字符集的问题

关于php7 设计链接mysqlutf8mb4字符集的问题

WBOY
Freigeben: 2016-07-06 13:51:30
Original
1467 Leute haben es durchsucht

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

<code>Unable to set client connection character set: utf8mb4</code>
Nach dem Login kopieren
Nach dem Login kopieren

使用utf8则没有报错

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

<code>SET NAMES 'utf8mb4';</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4', 'db_user', 'db_password');</code>
Nach dem Login kopieren
Nach dem Login kopieren

to:

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db', 'db_user', 'db_password', array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

回复内容:

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

<code>Unable to set client connection character set: utf8mb4</code>
Nach dem Login kopieren
Nach dem Login kopieren

使用utf8则没有报错

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

<code>SET NAMES 'utf8mb4';</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4', 'db_user', 'db_password');</code>
Nach dem Login kopieren
Nach dem Login kopieren

to:

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db', 'db_user', 'db_password', array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage