Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-ce que PDO ... SET NAMES utf8 est dangereux ?

Utilisez-vous vraiment encore PHP>=version 3.6 et <5.3.6 ?

En supposant que vous ayez 5.3.6 ou une version ultérieure...

Jeux de caractères et PDO_MYSQL DSN dites que vous devriez utiliser

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

Et implique (pas assez clairement) que utf8 doit être remplacé par utf8mb4 le cas échéant.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' n'est pas aussi bon, mais c'était l'alternative avant 5.3.6.

Je pense que "dangereux" est un mot trop fort, même avant la version 5.3.6.

Une technique connexe :Utilisation de init_command = SET NAMES ... dans my.cnf c'est mauvais car init_command n'est pas exécuté lors de la connexion en tant que root .

utf8mb4 est le CHARACTER SET préféré pour UTF-8 car il inclut Emoji et certains caractères chinois qui manquaient dans utf8 . Ce jeu de caractères est disponible à partir de MySQL version 5.5.3.