sql >> Databasteknik >  >> RDS >> Mysql

Är PDO ... SET NAMES utf8 farligt?

Använder du verkligen fortfarande PHP>=version 3.6 och <5.3.6 ?

Förutsatt att du har 5.3.6 eller senare...

Teckenuppsättningar och PDO_MYSQL DSN säg att du ska använda

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

Och antyder (inte tillräckligt tydligt) att utf8 bör ersättas med utf8mb4 om det är lämpligt.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' är inte lika bra, men var alternativet före 5.3.6.

Jag tycker att "farlig" är ett för starkt ord, även före 5.3.6.

En relaterad teknik:Använda init_command = SET NAMES ... i my.cnf är dåligt eftersom init_command exekveras inte vid anslutning som root .

utf8mb4 är den föredragna CHARACTER SET för UTF-8 eftersom det innehåller Emoji och några kinesiska tecken som saknades i utf8 . Den teckenuppsättningen är tillgänglig från och med MySQL version 5.5.3.




  1. Hur skriver man en fråga som gör något som liknar MySQL:s GROUP_CONCAT i Oracle?

  2. Uppdatera tabell med slumpmässig post i uppdateringsstatement i SQL Server?

  3. Fix MySQL Warning 1287:"BINARY expr" är utfasad och kommer att tas bort i en framtida version

  4. Vilken db-hanterare för ett 100Go-bord?