MySQL-forbindelsesindstillinger kan være skyld her. Kør denne MySQL-kommando, når du opretter forbindelse til databasen fra PHP, før du kører andre SQL-kommandoer:
SET names 'utf8';
Dette bør indstille forbindelsens kodning til UTF-8. Som du siger, er siden og databasen allerede i UTF-8 (det burde også betyde, at siden sender Content-Type: text/html; charset=utf-8
); selve forbindelsen kan ved et uheld have en anden kodning som standard :(