通過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
回複內容:
通過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