Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PDO ... SET NAMES utf8 có nguy hiểm không?

Bạn có thực sự vẫn đang sử dụng PHP> =phiên bản 3.6 và <5.3.6 không?

Giả sử bạn có 5.3.6 trở lên ...

Bộ ký tự PDO_MYSQL DSN nói rằng bạn nên sử dụng

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

Và ngụ ý (không đủ rõ ràng) rằng utf8 nên được thay thế bằng utf8mb4 nếu thích hợp.

PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' không tốt bằng, nhưng là giải pháp thay thế trước 5.3.6.

Tôi nghĩ rằng "nguy hiểm" là một từ quá mạnh, ngay cả trước 5.3.6.

Một kỹ thuật liên quan:Sử dụng init_command = SET NAMES ... trong my.cnf tệ lắm bởi vì init_command không được thực thi khi kết nối bằng root .

utf8mb4CHARACTER SET ưa thích cho UTF-8 vì nó bao gồm Biểu tượng cảm xúc và một số ký tự Trung Quốc bị thiếu trong utf8 . Bộ ký tự đó có sẵn bắt đầu với MySQL phiên bản 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. Quản lý giao dịch với DAO

  2. Thực thi lệnh mysql trước khi tập lệnh thử nghiệm trên GitLab CI

  3. MySQL - Cách tách các giá trị trong các chuỗi đơn bằng cách sử dụng dấu phẩy

  4. Tối ưu hóa bảng innodb

  5. Tab Bootstrap động sử dụng PHP / MySQL