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

Thao tác dữ liệu utf8mb4 từ MySQL với PHP

Tôi chỉ đơn giản đoán rằng bạn đang đặt bảng thành utf8mb4 , nhưng mã hóa kết nối của bạn được đặt thành utf8 . Bạn phải đặt nó thành utf8mb4 cũng như, nếu không MySQL sẽ chuyển đổi utf8mb4 được lưu trữ dữ liệu tới utf8 , cái sau không thể mã hóa các ký tự Unicode "cao". (Đúng, đó là kiểu riêng của MySQL.)

Trên một kết nối MySQL thô, nó sẽ phải trông như thế này:

SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;

Bạn sẽ phải điều chỉnh điều đó theo cách tốt nhất của ứng dụng khách, tùy thuộc vào cách bạn kết nối với MySQL từ PHP (mysql, mysqli hoặc PDO).

Để thực sự làm rõ (vâng, sử dụng mysql_ vì đơn giản, đừng làm điều đó ở nhà):

mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4');     // adapt to your mysql connector of choice

$r = mysql_query('SELECT * FROM `my_table`');

var_dump(mysql_fetch_assoc($r));  // data will be UTF8 encoded


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố cài đặt MYSQL

  2. Chỉ số trên Varchar có tạo ra sự khác biệt về hiệu suất không?

  3. Thứ tự cột có quan trọng trong các bảng MySQL của bạn không?

  4. Tại sao id auto_increment không tăng từng cái một, làm thế nào để đặt nó?

  5. Cập nhật bảng từ một bảng khác và cơ sở dữ liệu khác