sql >> Databáze >  >> RDS >> Mysql

Je PDO ... SET NAMES utf8 nebezpečné?

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.




  1. Jak nasadit Teamcity s PostgreSQL pro vysokou dostupnost

  2. ORA-00838

  3. Sloučit tabulku na jednom ze 2 sloupců v pandách

  4. najděte všechna jména pomocí dotazu mysql, který začíná písmenem 'a'