Mysql
 sql >> Database >  >> RDS >> Mysql

DOP... SET NAMES utf8 è pericoloso?

Stai davvero ancora usando PHP>=versione 3.6 e <5.3.6 ?

Supponendo che tu abbia 5.3.6 o versioni successive...

Set di caratteri e DSN PDO_MYSQL dì che dovresti usare

$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
               'my_user', 'my_pass');

E implica (non abbastanza chiaramente) che utf8 dovrebbe essere sostituito da utf8mb4 se del caso.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' non è così buono, ma era l'alternativa prima della 5.3.6.

Penso che "pericoloso" sia una parola troppo forte, anche prima della 5.3.6.

Una tecnica correlata:usando init_command = SET NAMES ... in my.cnf è cattivo perché init_command non viene eseguito quando ci si connette come root .

utf8mb4 è il CHARACTER SET preferito per UTF-8 perché include Emoji e alcuni caratteri cinesi mancanti da utf8 . Quel set di caratteri è disponibile a partire da MySQL versione 5.5.3.