sql >> Base de Datos >  >> RDS >> Mysql

¿Es PDO... SET NAMES utf8 peligroso?

¿Realmente sigues usando PHP>=versión 3.6 y <5.3.6 ?

Asumiendo que tienes 5.3.6 o posterior...

Conjuntos de caracteres y PDO_MYSQL DSN decir que deberías usar

$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
               'my_user', 'my_pass');

E implica (no lo suficientemente claro) que utf8 debe ser reemplazado por utf8mb4 si corresponde.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' no es tan bueno, pero era la alternativa antes de 5.3.6.

Creo que "peligroso" es una palabra demasiado fuerte, incluso antes de 5.3.6.

Una técnica relacionada:Usar init_command = SET NAMES ... en my.cnf es malo porque init_command no se ejecuta cuando se conecta como root .

utf8mb4 es el CHARACTER SET preferido para UTF-8 porque incluye emoji y algunos caracteres chinos que faltaban en utf8 . Ese juego de caracteres está disponible a partir de la versión 5.5.3 de MySQL.