Просто предполагам, че задавате таблицата на utf8mb4 , но кодирането на връзката ви е настроено на utf8 . Трябва да го настроите на utf8mb4 също така, в противен случай MySQL ще преобразува съхранения utf8mb4 данни към utf8 , последният от които не може да кодира "високи" символи на Unicode. (Да, това е идиосинкразия на MySQL.)
При необработена MySQL връзка тя ще трябва да изглежда така:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Ще трябва да го адаптирате към най-добрия начин на клиента, в зависимост от това как се свързвате с MySQL от PHP (mysql, mysqli или PDO).
За да изясня наистина (да, използвайки mysql_ разширение за простота, не правете това у дома):
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