Mysql
 sql >> база данни >  >> RDS >> Mysql

Опасно ли е PDO ... SET NAMES utf8?

Наистина ли все още използвате PHP>=версия 3.6 и <5.3.6?

Ако приемем, че имате 5.3.6 или по-нова...

Набори от знаци и PDO_MYSQL DSN кажете, че трябва да използвате

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

И предполага (не достатъчно ясно), че utf8 трябва да се замени с utf8mb4 ако е подходящо.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' не е толкова добър, но беше алтернативата преди 5.3.6.

Мисля, че „опасно“ е твърде силна дума, дори преди 5.3.6.

Свързана техника:Използване на init_command = SET NAMES ... в my.cnf е лошо защото init_command не се изпълнява при свързване като root .

utf8mb4 е предпочитаният CHARACTER SET за UTF-8, тъй като включва Emoji и някои китайски знаци, които липсваха в utf8 . Този набор от знаци е наличен, започвайки с 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. Изтрийте редове с Laravel конструктор на заявки и LEFT JOIN

  2. как мога да създам система за маркиране с помощта на php и mysql?

  3. многомерен масив заявка mysql

  4. Несъвместимост с Mysql 5.7 (израз #1 на клаузата ORDER BY не е в списъка SELECT)

  5. Защо моят скрипт docker-entrypoint-initdb.d (както е посочен в docker-compose.yml) не се изпълнява, за да инициализира ново копие на MySQL?