Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O DOP ... SET NAMES utf8 é perigoso?


Você ainda está usando PHP>=versão 3.6 e <5.3.6 ?

Supondo que você tenha 5.3.6 ou posterior ...

Conjuntos de caracteres e PDO_MYSQL DSN dizer que você deve usar
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
               'my_user', 'my_pass');

E implica (não com clareza suficiente) que utf8 deve ser substituído por utf8mb4 se apropriado.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' não é tão bom, mas era a alternativa antes de 5.3.6.

Eu acho que "perigoso" é uma palavra muito forte, mesmo antes do 5.3.6.

Uma técnica relacionada:Usando init_command = SET NAMES ... em my.cnf é ruim porque init_command não é executado ao conectar como root .

utf8mb4 é o CHARACTER SET preferido para UTF-8 porque inclui Emoji e alguns caracteres chineses que estavam faltando em utf8 . Esse conjunto de caracteres está disponível a partir do MySQL versão 5.5.3.