Được rồi, cuối cùng thì tôi cũng đã làm được! Cảm ơn mọi người đã cố gắng giúp đỡ tôi, đặc biệt là @Rick James và @Gerard Roche.
ĐỀ XUẤT:
Nếu bạn cần làm việc với biểu tượng cảm xúc, trước hết hãy thực hiện các bài kiểm tra đơn giản trên localhost. Tạo cơ sở dữ liệu mới và tạo một ứng dụng mới cho mục đích thử nghiệm.
Nếu bạn làm theo các bước tôi đã viết trong câu hỏi hoặc nếu bạn làm theo hướng dẫn này: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 nó phải hoạt động.
Làm việc cục bộ trên một ứng dụng cơ bản mới, bạn sẽ có nhiều quyền kiểm soát hơn và nhiều chỗ hơn để thực hiện tất cả các thử nghiệm bạn cần.
GIẢI PHÁP:
Trong trường hợp của tôi, sự cố nằm ở cấu hình của cơ sở dữ liệu trong CodeIgniter. Việc thiết lập char_set và đối chiếu không đúng cách cho một sự nhầm lẫn ngu ngốc:Tôi đã ghi đè cài đặt cơ sở dữ liệu trong hàm lưu thư để đảm bảo rằng nó đang hoạt động với cơ sở dữ liệu di động.
TRƯỚC:
function message_save ( $data = FALSE )
{
$project_db_config = array();
$project_db_config['hostname'] = 'MY_HOST';
$project_db_config['username'] = 'MY_USERNAME';
$project_db_config['password'] = 'MY_PASSWORD';
$project_db_config['database'] = 'MY_DATABASE';
$mobile_db = $this->load->database( $project_db_config, TRUE );
// other code to save message
}
SAU:
function message_save ( $data = FALSE )
{
$mobile_db_connection = $this->load->database('admin_mobile_mh', TRUE);
// other code to save message
}
KẾT LUẬN:
Ứng dụng phải thiết lập kết nối với cơ sở dữ liệu đúng cách. Nếu bạn đã thiết lập cơ sở dữ liệu đúng cách nhưng bạn không tạo kết nối thích hợp với ứng dụng của mình, nó sẽ không hoạt động.
Vì vậy, nếu bạn gặp các sự cố tương tự, hãy đảm bảo api thiết lập đúng cách char_set
dưới dạng utf8mb4
và db_collat
dưới dạng utf8mb4_unicode_ci
.