すべてのクエリの前に使用する必要はありませんSET NAMES utf8
。接続が確立されたら実行するだけです。PDO の例を次に示します。
try {
$dns = "mysql:host={HOST};dbname={DB}";
$user = "{USER}";
$pass = "{PASS}";
$con = new PDO($dns, $user, $pass);
} catch ( Exception $e ) {
echo "Connexion error ", $e->getMessage();
die();
}
$con->query("SET NAMES utf8;");
//and now, as many queries as you want
PHP >= 5.3.6 を使用している場合は、接続文字列で文字セットを定義できます (以前の PHP バージョンでは無視されます)。
try {
$dns = "mysql:host={HOST};dbname={DB};charset=utf8";
$user = "{USER}";
$pass = "{PASS}";
$con = new PDO($dns, $user, $pass);
} catch ( Exception $e ) {
echo "Connexion error ", $e->getMessage();
die();
}
//and now, as many queries as you want