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

Làm thế nào để chỉ định đối chiếu với PDO mà không cần ĐẶT TÊN?

Đây là câu trả lời hai trong một.

Bạn có thể đặt điều này trong DSN hoặc MYSQL_ATTR_INIT_COMMAND (tùy chọn kết nối).

Tôi nghĩ DSN tốt hơn.

$connect = new PDO(
  "mysql:host=$host;dbname=$db;charset=utf8", 
  $user, 
  $pass, 
  array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  )
); 

Nếu bạn chỉ định UTF-8 bạn đang làm việc với đối chiếu mặc định của utf8_general_ci , trừ khi bảng hoặc trường db của bạn sử dụng thứ gì đó khác.

Nếu bạn muốn toàn bộ máy chủ phản hồi với đối chiếu mặc định này thì hãy sử dụng chỉ thị cấu hình:

collation_server=utf8_unicode_ci 
character_set_server=utf8

Vì vậy, bạn không phải chỉ định nó trên kết nối mọi lúc.

Các đối chiếu ảnh hưởng đến việc sắp xếp các ký tự và được đặt trên bảng và các trường trong cơ sở dữ liệu của bạn. Các cài đặt này được tôn trọng khi truy vấn bảng. Đảm bảo rằng chúng đã được đặt. Sử dụng tên UTF-8 với đối chiếu được đặt trong db của bạn.

Nhận xét của bạn:

Hãy Trích dẫn từ Hướng dẫn sử dụng MySQL để chứng minh điều này:

Câu trả lời của tôi: Nó hoạt động ngầm, trừ khi các bảng của bạn thay đổi điều này một cách rõ ràng.

Câu hỏi từ bình luận:

Ví dụ:Đối chiếu cột ghi đè đối chiếu bảng

CREATE TABLE t1
(
    col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci
) CHARACTER SET latin1 COLLATE latin1_bin;

Nếu cả CHARACTER SET X và COLLATE Y được chỉ định trên một cột, thì bộ ký tự X và đối chiếu Y sẽ được sử dụng. Cột có bộ ký tự utf8 và đối chiếu utf8_unicode_ci như được chỉ định trong cột bảng, trong khi bảng ở dạng latin1 + latin1_bin.

Ví dụ:nói chung, đối chiếu bảng được sử dụng

Nếu đối chiếu không được chỉ định rõ ràng trên một cột / Trường, thì đối chiếu bảng sẽ được sử dụng:

CREATE TABLE t1
(
    col1 CHAR(10)
) CHARACTER SET latin1 COLLATE latin1_bin;

col1 có đối chiếu latin1_bin.

Nếu bạn muốn utf8_unicode_ci đối chiếu, đặt nó vào bảng của bạn nói chung hoặc các cột / trường.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tinyint vs Bit?

  2. MySQL chỉ định thứ tự tùy ý theo id

  3. Làm cách nào để tìm mối quan hệ giữa các bảng có liên quan đến khoảng cách dài? MySQL

  4. Cách kiểm tra xem cơ sở dữ liệu mysql có tồn tại hay không

  5. Cách kết nối với Nguồn dữ liệu MySQL trong Visual Studio