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.