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.