mysql関数の場合はmysql_set_charset関数でOK。
PDOでMySQLを使う場合は、PHP 5.3.6からDSNでcharsetを指定できるようになっているので、PDOのインスタンスを作るときにcharsetをきちんと指定してあげる。
<?php
$pdo = new PDO(
'mysql:host=yourhost;dbname=yourdb;charset=utf8mb4',
'user', 'password'
);
PHP 5.3.6より前のバージョンをどうしても使わなければいけない場合は次のようにする。
<?php
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
);
$pdo = new PDO(
'mysql:host=yourhost;dbname=yourdb',
'user', 'password', $options
);
いつの間にかPHPのマニュアルにMySQLの文字セット指定についてのページが追加されてた。