Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy PDO ... SET NAMES utf8 jest niebezpieczne?

Czy naprawdę nadal używasz PHP>=w wersji 3.6 i <5.3.6?

Zakładając, że masz wersję 5.3.6 lub nowszą...

Zestawy znaków i PDO_MYSQL DSN powiedz, że powinieneś użyć

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

I sugeruje (nie dość jasno), że utf8 powinien zostać zastąpiony przez utf8mb4 w razie potrzeby.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' nie jest tak dobry, ale był alternatywą przed 5.3.6.

Myślę, że „niebezpieczne” to zbyt mocne słowo, nawet przed 5.3.6.

Powiązana technika:Używanie init_command = SET NAMES ... w my.cnf jest zły ponieważ init_command nie jest wykonywane podczas łączenia jako root .

utf8mb4 jest preferowanym CHARACTER SET dla UTF-8, ponieważ zawiera Emoji i niektóre chińskie znaki, których brakowało w utf8 . Ten zestaw znaków jest dostępny od wersji MySQL 5.5.3.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieznana kolumna „Project2.Name” w klauzuli „where”

  2. Kopiuj wiersze z jednej tabeli do drugiej za pomocą zapytania INSERT

  3. Musisz wstawić 100000 wierszy w mysql za pomocą hibernacji w mniej niż 5 sekund

  4. Aktualizacja MySQL z podzapytanie w trybie bezpiecznej aktualizacji

  5. MySQL — rekursywna struktura drzewa