Simplemente supongo que está configurando la tabla en utf8mb4 , pero la codificación de su conexión está establecida en utf8 . Tienes que configurarlo en utf8mb4 también, de lo contrario MySQL convertirá el utf8mb4 almacenado datos a utf8 , el último de los cuales no puede codificar caracteres Unicode "altos". (Sí, esa es una idiosincrasia de MySQL).
En una conexión MySQL sin procesar, tendrá que verse así:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
Tendrás que adaptar eso a la mejor manera del cliente, dependiendo de cómo te conectes a MySQL desde PHP (mysql, mysqli o PDO).
Para aclarar realmente (sí, usando mysql_ extensión para simplificar, no hagas eso en casa):
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