Opravdu stále používáte PHP>=verze 3.6 a <5.3.6 ?
Za předpokladu, že máte 5.3.6 nebo novější...
Znakové sady a PDO_MYSQL DSN řekni, že bys měl použít
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
'my_user', 'my_pass');
A naznačuje (ne dost jasně), že utf8 by měl být nahrazen utf8mb4 pokud je to vhodné.
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' není tak dobrý, ale byl alternativou před 5.3.6.
Myslím, že „nebezpečné“ je příliš silné slovo, dokonce i před 5.3.6.
Související technika:Použití init_command = SET NAMES ... v my.cnf je špatné protože init_command při připojení jako root se nespustí .
utf8mb4 je preferovaná CHARACTER SET pro UTF-8, protože obsahuje Emoji a některé čínské znaky, které v utf8 chyběly . Tato znaková sada je k dispozici od verze MySQL 5.5.3.