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

Er PDO ... SET NAMES utf8 farligt?

Bruger du virkelig stadig PHP>=version 3.6 og <5.3.6 ?

Forudsat at du har 5.3.6 eller nyere...

Tegnsæt og PDO_MYSQL DSN sige, at du skal bruge

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

Og antyder (ikke tydeligt nok), at utf8 skal erstattes af utf8mb4 hvis det er relevant.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' er ikke så god, men var alternativet før 5.3.6.

Jeg synes "farlig" er et for stærkt ord, selv før 5.3.6.

En relateret teknik:Brug af init_command = SET NAMES ... i my.cnf er dårligt fordi init_command udføres ikke, når der oprettes forbindelse som root .

utf8mb4 er det foretrukne CHARACTER SET for UTF-8, fordi den indeholder Emoji og nogle kinesiske tegn, der manglede i utf8 . Det tegnsæt er tilgængeligt fra MySQL version 5.5.3.




  1. Yii Få udført MySql-forespørgsel

  2. Sådan vælger du poster fra de sidste 24 timer i PostgreSQL

  3. Kan jeg tvinge mysql til at udføre underforespørgsel først?

  4. Distinkt vs gruppe efter