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.