Gebruik je echt nog PHP>=versie 3.6 en <5.3.6 ?
Ervan uitgaande dat je 5.3.6 of hoger hebt...
Tekensets en PDO_MYSQL DSN zeg dat je moet gebruiken
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
'my_user', 'my_pass');
En impliceert (niet duidelijk genoeg) dat utf8 moet worden vervangen door utf8mb4 indien van toepassing.
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' is niet zo goed, maar was het alternatief vóór 5.3.6.
Ik denk dat 'gevaarlijk' een te sterk woord is, zelfs vóór 5.3.6.
Een verwante techniek:init_command = SET NAMES ... in my.cnf is slecht omdat init_command wordt niet uitgevoerd bij verbinding als root .
utf8mb4 is de geprefereerde CHARACTER SET voor UTF-8 omdat het Emoji en enkele Chinese karakters bevat die ontbraken in utf8 . Die tekenset is beschikbaar vanaf MySQL-versie 5.5.3.