1. 程式人生 > >php mysql emoji 的儲存

php mysql emoji 的儲存

本來是iOS開發,要往伺服器上存emoji表情,無奈Java後臺太菜,搞什麼轉義,安卓那邊可以轉義存到MySQL,可是iOS這邊不行,昨天嘗試著玩一把MySQL,整整折騰了一天才搞定。

首先說下步驟

1 ,MySQL的資料庫設定成 Default collation: utf8mb4_unicode_ci  Default characterset:utf8mb4

2. MySQL的表設定成 Table collation:utf8mb4_bin

3.存emoji的欄位設定字符集: utf8mb4_bin

然後改資料庫的字符集,其實我也不知道這是什麼意思,就是在my.cnf 檔案中加入

[client] 
default-character-set = utf8mb4 
[mysql] 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect=’SET NAMES utf8mb4’

sql_mode=NO_ENGINE_SUBSTITUTION

然後設定PHP連線資料庫的字符集
header('Content-type:text/json;charset=utf8mb4');
include 'define.php';

$description = $_POST['description'];

$dsn = "mysql:host=".DB_SERVER.";dbname=".DB_NAME;

$pdo = new PDO($dsn, DB_USER,DB_PWD);
//var_dump($pdo);

$sql = "set names utf8mb4";  //連線資料庫的字符集
$pdo->exec($sql);

$sql = "insert into emoji(content,name) VALUES ('$description','1')";
//$stmt = $pdo->exec($sql);
//var_dump($stmt);

try {
    $stmt = $pdo->exec($sql);
    if ($stmt) { // 插入成功返回影響的行數  插入失敗返回 false
        echo json_encode(array('result' => '1'));
    }else {
        echo json_encode(array('result' => '2'));
    }
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "\n";
}