MySQLとPDOの組み合わせでcharsetを指定する

  • 44
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

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の文字セット指定についてのページが追加されてた。