Använder du verkligen fortfarande PHP>=version 3.6 och <5.3.6 ?
Förutsatt att du har 5.3.6 eller senare...
Teckenuppsättningar och PDO_MYSQL DSN säg att du ska använda
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
'my_user', 'my_pass');
Och antyder (inte tillräckligt tydligt) att utf8 bör ersättas med utf8mb4 om det är lämpligt.
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' är inte lika bra, men var alternativet före 5.3.6.
Jag tycker att "farlig" är ett för starkt ord, även före 5.3.6.
En relaterad teknik:Använda init_command = SET NAMES ... i my.cnf är dåligt eftersom init_command exekveras inte vid anslutning som root .
utf8mb4 är den föredragna CHARACTER SET för UTF-8 eftersom det innehåller Emoji och några kinesiska tecken som saknades i utf8 . Den teckenuppsättningen är tillgänglig från och med MySQL version 5.5.3.